2
我试图在我的Android手机相机中抓取一个图像,使用此图像的ROI定义模板,然后在抓取连续图像时执行模板匹配以查找模板的新位置。使用OpenCV进行模板匹配
的问题是,它似乎模板匹配没有运行:所有的时间maxVal
值约为0.99,而maxLoc
正是模板的原始位置(X
,Y
下文)。
我在做什么错?
这是代码抓帧时:
protected Bitmap processFrame(VideoCapture capture) {
capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_BGRA2GRAY);
Mat corrMap = new Mat();
Imgproc.matchTemplate(mGray, template, corrMap, Imgproc.TM_CCOEFF_NORMED);
MinMaxLocResult locRes = Core.minMaxLoc(corrMap);
double maxVal = locRes.maxVal;
Point maxLoc = locRes.maxLoc;
Scalar c = new Scalar(255, 0, 0, 255);
Core.putText(mRgba, Double.toString(maxVal), new Point(100,100), 3, 1, c, 2);
Core.putText(mRgba, Double.toString(maxLoc.x), new Point(100,130), 3, 1, c, 2);
Core.putText(mRgba, Double.toString(maxLoc.y), new Point(100,160), 3, 1, c, 2);
}
这是生成模板代码:
X = 100;
Y = 100;
H = 150;
W = 200;
template = mGray.submat(Y-H/2, Y+H/2, X-W/2, X+W/2);
不是答案,但模板匹配几乎总是一个不好的解决方案来定位/跟踪对象。 – Sam 2012-08-01 07:26:55
@vasile,我知道,我只是想编写一些快速而简单的代码......最终我花了大约4小时在这 – 2012-08-01 12:02:39
@YanaiAnkri你能否提供一些关于[这个问题]的建议(http://stackoverflow.com/问题/ 29072000/opencv4android-template-matching-using-camera)? – 2015-03-16 08:02:51