Opencv SurfFeatureDetector并使用Mat()创建空遮罩
我想使用Opencv SurfFeatureDetector并使用Mat()创建空遮罩,opencv,feature-detection,surf,Opencv,Feature Detection,Surf,我想使用SurfFeatureDetector检测图片指定区域上的关键点: 列车图片和来源图片 使用SurfFeatureDetector检测列车pic关键点1 使用指定区域中的SurfFeatureDetector检测源图像关键点2 计算并匹配 OpenCVSurfFeatureDetector如下所示 void FeatureDetector::detect(常数矩阵和图像、向量和关键点、常数矩阵和掩码=Mat()) 掩码–指定在何处查找关键点的掩码(可选)。必须是兴趣区域中具有非零值的字符
SurfFeatureDetector
检测图片指定区域上的关键点:
SurfFeatureDetector
检测列车pic关键点1SurfFeatureDetector
检测源图像关键点2SurfFeatureDetector
如下所示
void FeatureDetector::detect(常数矩阵和图像、向量和关键点、常数矩阵和掩码=Mat())
掩码–指定在何处查找关键点的掩码(可选)。必须是兴趣区域中具有非零值的字符矩阵
任何人都可以帮助解释如何为源代码创建mask=Mat()
谢谢
Jay从技术上讲,您不必指定空矩阵来使用
检测功能,因为它是默认参数
您可以这样调用detect
:
Ptr<FeatureDetector> detector = FeatureDetector::create("SURF");
vector<KeyPoint> keyPoints;
detector->detect(anImage, keyPoints);
编辑:中有一个复制错误。设置遮罩的ROI
,然后将其传递给检测功能
希望能把事情弄清楚 您在技术上不必指定空矩阵来使用检测
函数,因为它是默认参数
您可以这样调用detect
:
Ptr<FeatureDetector> detector = FeatureDetector::create("SURF");
vector<KeyPoint> keyPoints;
detector->detect(anImage, keyPoints);
编辑:中有一个复制错误。设置遮罩的ROI
,然后将其传递给检测功能
希望能把事情弄清楚 嗨,Mevatron,我试着将ROI设置为白色。我只想检测ROI内部的关键点,而不是整个源pic。谢谢你的帮助。@Jay嘿,Jay!请参阅我编辑的回复。基本上,您只需在希望检测它运行的位置创建一个非零值的掩码。当我尝试如上所述设置掩码时,会出现以下错误:“OpenCV错误:断言失败(mask.empty()| |(mask.type()==CV_8UC1&&mask.size()==image.size()))在detect文件/Users/Users/Downloads/OpenCV iOS/OpenCV iOS/./OpenCV svn/modules/features2d/src/detectors.cpp中,第63行“OpenCV告诉您提供的掩码不是空的,掩码类型不是CV_8UC1,或者掩码的大小与处理后的图像不同。确保所有这些设置都正确。嗨,Mevatron,我试着将ROI设置为白色。我只想检测ROI内部的关键点,而不是整个源pic。谢谢你的帮助。@Jay嘿,Jay!请参阅我编辑的回复。基本上,您只需在希望检测它运行的位置创建一个非零值的掩码。当我尝试如上所述设置掩码时,会出现以下错误:“OpenCV错误:断言失败(mask.empty()| |(mask.type()==CV_8UC1&&mask.size()==image.size()))在detect文件/Users/Users/Downloads/OpenCV iOS/OpenCV iOS/./OpenCV svn/modules/features2d/src/detectors.cpp中,第63行“OpenCV告诉您提供的掩码不是空的,掩码类型不是CV_8UC1,或者掩码的大小与处理后的图像不同。确保所有这些东西都设置正确。
Mat mask = Mat::zeros(Source_pic.size(), Source_pic.type());
// select a ROI
Mat roi(mask, Rect(10,10,100,100));
// fill the ROI with (255, 255, 255) (which is white in RGB space);
// the original image will be modified
roi = Scalar(255, 255, 255);