似乎 MSER 算法对于 OpenCV 3.0 的桌面版和 Android 版的工作方式不同。下面的代码根据运行 OpenCV 的平台(桌面或安卓)产生不同的结果:
Mat img = Imgcodecs.imread(filename, Imgcodecs.IMREAD_GRAYSCALE);
MatOfKeyPoint mokp = new MatOfKeyPoint();
FeatureDetector fd = FeatureDetector.create(FeatureDetector.MSER);
fd.detect(img, mokp);
接着
System.out.println("Mat of key points = " + mokp.rows() + "x" + mokp.cols());
(台式机)或
Log.i(TAG, "Mat of key points = " + mokp.rows() + "x" + mokp.cols());
(适用于安卓)
这是我在日志中得到的:
Mat of key points = 79x1
(桌面)
Mat of key points = 216x1
(安卓)
为什么有区别?是否有任何 MSER 默认设置,对于桌面和安卓来说是不同的?我被困在这里,非常感谢任何帮助。