我尝试使用 CamShift 进行对象跟踪。但是我收到了错误。这个错误来自反投影
这是来自 LOGCAT 的错误消息
在 void cv::calcBackProject(cv::InputArrayOfArrays, const std::vector&, cv::InputArray, cv::OutputArray, const std::vector&, double)
这是我的代码。任何人都可以帮助我吗?(对不起我可怜的英语)
公共垫 onCameraFrame(CvCameraViewFrame inputFrame) {
mrgba=inputFrame.rgba();
firstTime++;
Mat roiHist=new Mat();
// set up the ROI for tracking
// implemented only one time
if(firstTime==2)
{
imgRoi=mrgba.submat(roi.x,roi.x+roi.width,roi.y,roi.y+roi.height);
Imgproc.cvtColor(imgRoi,mHsv, Imgproc.COLOR_BGR2HSV);//hsv'yi bul
Core.inRange(mHsv,new Scalar(0,60,32), new Scalar(180,255,255), mask);
roiHist=HistogramAndNormalize();
}
Imgproc.cvtColor(mrgba,mHsv, Imgproc.COLOR_BGR2HSV);
List<Mat> lHSV= Arrays.asList(mHsv);
Mat backproj = new Mat();
Imgproc.calcBackProject(lHSV, new MatOfInt(0, 1),roiHist, backproj,new MatOfFloat(0, 179, 0, 255), 1);
RotatedRect rect=Video.CamShift(backproj,roi, new TermCriteria(TermCriteria.EPS,10,1));
roi = rect.boundingRect();
Core.rectangle( mrgba,new org.opencv.core.Point(roi.x,roi.y),new org.opencv.core.Point(roi.x+roi.width,roi.y+roi.height),
new Scalar(0,255,0,255));
return mrgba;
}