Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 41027

chamfer matching on android

$
0
0
Anyone here have tried implementing the chamerMatching method on android using opencv4android? I cant get it to work properly on my device galaxy tab 3 kitkat. the application crashes as soon as I call the chamerMatching method. here's the screenshot of the logcat from where the problem starts. ![image description](/upfiles/14369379317338675.png) it seems like a memory problem. I'm trying to create an application the will compute the similarity scores between two edge maps/matrices using the chamfer matching algorithm provided on the contrib folder of opencv 2.4.11. heres my code. public static float getScore(Mat img, Mat tpl) { //System.loadLibrary(Core.NATIVE_LIBRARY_NAME); if (img.empty() | tpl.empty()) { System.out.println("Could not read image file."); return 0; } Imgproc.cvtColor(img, img, Imgproc.COLOR_BGR2GRAY); Imgproc.cvtColor(tpl, tpl, Imgproc.COLOR_BGR2GRAY); Mat cimg = new Mat(img.rows(), img.cols(), CvType.CV_8UC1); Imgproc.cvtColor(img, cimg, Imgproc.COLOR_GRAY2BGR); List results = new Vector<>(); MatOfFloat costs = new MatOfFloat(); int best = Contrib.chamerMatching(img, tpl, results, costs); if (best < 0) { System.out.println("matching not found"); return 0; } System.out.println("Chamfer Distance = " + costs.toList().get(best)); for (int i =0; i < results.get(best).rows(); i++) { Core.circle(cimg, results.get(best).toArray()[i], 0, new Scalar(0,255,0)); } int count_contour = Core.countNonZero(img); Imgproc.cvtColor(cimg, cimg, Imgproc.COLOR_BGR2GRAY); Imgproc.threshold(cimg, cimg, 150, 255, Imgproc.THRESH_BINARY); int count_white = Core.countNonZero(cimg); System.out.println("Contour = " + count_contour); System.out.println("White = " + count_white); float m = count_contour - count_white; float d = m / count_contour; float s = d * 100; return s; } heres the code that will call method getScore. easyBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v){ Mat img = new Mat(257,257, CvType.CV_8UC1); Mat tpl = new Mat(257,257, CvType.CV_8UC1); Bitmap imgBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo_in_clutter); Bitmap tplBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo); Utils.bitmapToMat(imgBitmap, img); Utils.bitmapToMat(tplBitmap, tpl); Log.i("CHAMFER TEST", "Score = " + ChamferTest.getScore(img, tpl)); } });

Viewing all articles
Browse latest Browse all 41027

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>