2013-04-03 3 views
2

Я хочу использовать сопоставление шаблонов, я использую код, который я нашел, который делает то, что я хочу, где он хранит его в растровом изображении и получает возврат растрового изображения, проблема в том, что я не совсем уверен как я могу добраться до рисования в прямоугольниках. Я использую только java, нет native, создавая приложение для Android. С использованием openCV, который я новичок. Я получу несколько совпадений, поэтому я хотел бы получить рисованные прямоугольники вокруг этих точек, а также получить значение для местоположений этих совпадений.OpenCV Template Matching Drawing Rectangle Around Match

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); 

ответ

0

Найти матч в вашей mResult, нарисуйте прямоугольник на Input с помощью Core.rectangle и записать это в файл.

///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); 
+0

Спасибо за публикацию этого (хотя 3 года назад :)). При использовании вашего подхода рисованный прямоугольник намного больше, чем изображение шаблона. Как можно провести правильную границу прямоугольника? Благодаря! – user3186023