我想使用SurfFeatureDetector
来检测指定图片区域的关键点:
Source_pic
SurfFeatureDetector
.SurfFeatureDetector
指定区域.OpenCV SurfFeatureDetector
如下所示。
void FeatureDetector::detect(const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat())
掩码-指定在哪里查找关键点(可选)。必须是在感兴趣区域内具有非零值的char矩阵。
任何人都可以帮助解释如何为mask=Mat()
创建Source_pic?
谢谢杰
发布于 2012-03-29 00:58:05
在技术上,您不必指定使用detect
函数的空矩阵,因为它是默认参数。
您可以这样调用detect
:
Ptr<FeatureDetector> detector = FeatureDetector::create("SURF");
vector<KeyPoint> keyPoints;
detector->detect(anImage, keyPoints);
或者,通过显式创建空矩阵:
Ptr<FeatureDetector> detector = FeatureDetector::create("SURF");
vector<KeyPoint> keyPoints;
detector->detect(anImage, keyPoints, Mat());
如果您想要在感兴趣的区域创建一个掩码,您可以创建如下所示的掩码:
假设Source_pic
是CV_8UC3
类型,
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);
编辑:有一个拷贝-意大利面错误在那里。为mask
设置ROI,然后将其传递给detect
函数。
希望这能把事情弄清楚!
https://stackoverflow.com/questions/9902368
复制相似问题