4

テンプレート マッチングを使用して、Android のカメラ入力と画像を一致させようとしています。ここのような静的な2つの画像でこれを試すと: OpenCV Template Matching example in Android、すべて正常に動作します。しかし、カメラからキャプチャした画像を使用しようとすると、正しい結果が得られません。以下は私が書いたコードです:

  String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();


                Mat img = Highgui.imread(baseDir + "/mediaAppPhotos/img2.png");
                Mat templ = Highgui.imread(baseDir+ "/mediaAppPhotos/chars.png");


                int result_cols = img.cols() - templ.cols() + 1;
                int result_rows = img.rows() - templ.rows() + 1;
                Mat result = new Mat(result_cols, result_rows, CvType.CV_32FC1);

                // / Do the Matching and Normalize
                Imgproc.matchTemplate(img, templ, result, Imgproc.TM_CCOEFF);
                Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1,
                        new Mat());

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

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

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

                // Save the visualized detection.
                System.out.println("Writing " + baseDir+ "/mediaAppPhotos/result.png");
                Highgui.imwrite(baseDir + "/mediaAppPhotos/result.png", img);

画像がカメラからキャプチャされたときにも、このテンプレート マッチングが機能するようにしたいと考えています。どんな助けでも大歓迎です!

4

1 に答える 1

0

多分このようなものです:

https://play.google.com/store/apps/details?id=in.mustafaak.imagematcher&hl=es_419

github で利用可能なコード

于 2015-05-20T21:18:43.567 に答える