android - OpenCV 模板匹配绘制矩形周围匹配

标签 android templates opencv matching template-matching

我想使用模板匹配,我正在使用一个代码,我发现它可以做我想做的事情,它把它保存在位图中并获得位图的返回,问题是我不完全确定我如何才能绘制矩形。在为 android 创建应用程序时,我只使用 java,没有本地。使用我不熟悉的openCV。我将获得多个匹配项,因此我想在这些点周围绘制矩形,并且还能够获得这些匹配项位置的值。

mFind=new Mat(256, 192, CvType.CV_8UC4); 
Input = new Mat(256, 192, CvType.CV_8UC4); 

Mat mResult8u = new Mat(256, 192, CvType.CV_8UC4); 

mResult = new Mat(217, 153, CvType.CV_8UC4); 

Utils.bitmapToMat(bmp2, mFind);
Utils.bitmapToMat(bmp1, Input);


Imgproc.matchTemplate(mFind, Input, mResult, Imgproc.TM_SQDIFF) ;
bmp3= Bitmap.createBitmap(mResult.cols(),  mResult.rows(),Bitmap.Config.ARGB_8888);
Core.normalize(mResult, mResult8u, 0, 255, Core.NORM_MINMAX, CvType.CV_8U);
Utils.matToBitmap(mResult8u, bmp3);
iv2.setImageBitmap(bmp3);

最佳答案

mResult 中找到匹配项,使用 Core.rectangleInput 上绘制矩形并将其写入文件。

// / Localizing the best match with minMaxLoc
MinMaxLocResult mmr = Core.minMaxLoc(mResult);

Point matchLoc;
if (match_method == Imgproc.TM_SQDIFF || match_method == Imgproc.TM_SQDIFF_NORMED) {
    matchLoc = mmr.minLoc;
} else {
    matchLoc = mmr.maxLoc;
}

// / Show me what you got
Core.rectangle(Input, matchLoc, new Point(matchLoc.x + templ.cols(),
        matchLoc.y + templ.rows()), new Scalar(0, 255, 0));

// Save the visualized detection.
System.out.println("Writing "+ outFile);
Highgui.imwrite(outFile, img);

关于android - OpenCV 模板匹配绘制矩形周围匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798691/

相关文章:

java - Android 模拟 GPS 卫星(不仅仅是位置)

java - QuickBlox 聊天消息监听器

c++ - "Conditional"别名模板

c++ - 从纯虚拟模板类派生

opencv - 如何使用 OpenCV 将偏导数高斯核应用于图像?

c++ - 如何在 C++ 中翻转 cv::mat?

Android滚动到 ListView 的底部

android - AutoCompleteTextView 下拉菜单的样式

php - 如何在不渲染 Twig 模板的情况下分析它们?

android - 如何理解OpenCV程序中引发的此异常