对于桌面和Android版本的OpenCV 3.0,似乎MSER算法的工作方式不同。根据运行OpenCV的平台(桌面或Android),下面的代码产生不同的结果:
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());
(对于android)
这是我在日志中得到的:
Mat of key points = 79x1
(桌面)
Mat of key points = 216x1
(机器人)
为什么会有区别?是否有任何MSER默认设置,对于桌面和Android有什么不同?我被困在这里,任何帮助都非常感激。