Я пытаюсь обнаружить и отследить объект с помощью opencv в видео.
когда я использую tracker.update, он всегда возвращает false. (Редко возвращается истина.)
Я использую модель трекера MedainFlow.
Ниже мой код. Я использую openCVLibrary 3.4.8
private void processing(Classifier.Recognition result){
if(mDrawing == Drawing.DRAWING){
...
mTracker = TrackerMedianFlow.create();
mTracker.init(mImageGrabInit, mInitRectangle);
mDrawing = Drawing.TRACKING;
}
else{
//Tracking
org.opencv.core.Rect2d trackingRectangle = new org.opencv.core.Rect2d(0, 0, 1,1);
boolean update = mTracker.update(mImageGrab, trackingRectangle);
if(update){
...
}
trackingOverlay.postInvalidate();
}
notFirst = true;
}
mImageGrab обновляется при захвате изображения.
int bytes = rgbFrameBitmap.getRowBytes()*rgbFrameBitmap.getHeight();
ByteBuffer bb = ByteBuffer.allocate(bytes);
rgbFrameBitmap.copyPixelsToBuffer(bb);
Utils.bitmapToMat(rgbFrameBitmap, mImageGrab);
org.opencv.core.Core.transpose(mImageGrab, mImageGrab);
org.opencv.core.Core.flip(mImageGrab, mImageGrab, 1);
org.opencv.imgproc.Imgproc.resize(mImageGrab, mImageGrab, new org.opencv.core.Size(240, 320)); //640,480
int bytes = rgbFrameBitmap.getRowBytes()*rgbFrameBitmap.getHeight();
ByteBuffer bb = ByteBuffer.allocate(bytes);
rgbFrameBitmap.copyPixelsToBuffer(bb);
Utils.bitmapToMat(rgbFrameBitmap, mImageGrab);
org.opencv.core.Core.transpose(mImageGrab, mImageGrab);
org.opencv.core.Core.flip(mImageGrab, mImageGrab, 1);
org.opencv.imgproc.Imgproc.resize(mImageGrab, mImageGrab, new org.opencv.core.Size(240, 320)); //640,480