我想將SurfFeatureDetector限制爲一組區域(掩碼)。對於一個測試,我只定義了一個面具:OpenCV:如何使用特徵點檢測的掩碼參數(SURF)
Mat srcImage; //RGB source image
Mat mask = Mat::zeros(srcImage.size(), srcImage.type());
Mat roi(mask, cv::Rect(10,10,100,100));
roi = Scalar(255, 255, 255);
SurfFeatureDetector detector();
std::vector<KeyPoint> keypoints;
detector.detect(srcImage, keypoints, roi); // crash
//detector.detect(srcImage, keypoints); // does not crash
當我通過「投資回報率」作爲掩膜我得到這個錯誤:
OpenCV Error: Assertion failed (mask.empty() || (mask.type() == CV_8UC1 && mask.size() == image.size())) in detect, file /Users/ux/Downloads/OpenCV-iOS/OpenCV-iOS/../opencv-svn/modules/features2d/src/detectors.cpp, line 63
有什麼不對呢?我如何正確地將掩碼傳遞給SurfFeatureDetector的「檢測」方法?
Regards,
謝謝,這是工作。 – Hyndrix 2013-05-04 05:35:49
我認爲它應該是'標量(255);'因爲面具是一維的。 – 2015-09-15 21:52:29
'roi'有3個通道,與'srcImage'相同('roi'是'srcImage'的子矩陣) – Alexey 2015-09-16 12:47:19