首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SurfFeatureDetector和使用Mat()创建空掩码

SurfFeatureDetector和使用Mat()创建空掩码
EN

Stack Overflow用户
提问于 2012-03-28 06:41:39
回答 1查看 4K关注 0票数 1

我想使用SurfFeatureDetector来检测指定图片区域的关键点:

Source_pic

  • Detect

  • Train_pic &Train_pic keypoint_1使用SurfFeatureDetector.
  1. Detect Source_pic keypoint_2使用SurfFeatureDetector指定区域.
  2. 计算和匹配.

OpenCV SurfFeatureDetector如下所示。

void FeatureDetector::detect(const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat())

掩码-指定在哪里查找关键点(可选)。必须是在感兴趣区域内具有非零值的char矩阵。

任何人都可以帮助解释如何为mask=Mat()创建Source_pic?

谢谢杰

EN

回答 1

Stack Overflow用户

发布于 2012-03-29 00:58:05

在技术上,您不必指定使用detect函数的空矩阵,因为它是默认参数。

您可以这样调用detect

代码语言:javascript
运行
复制
Ptr<FeatureDetector> detector = FeatureDetector::create("SURF");
vector<KeyPoint> keyPoints;
detector->detect(anImage, keyPoints);

或者,通过显式创建空矩阵:

代码语言:javascript
运行
复制
Ptr<FeatureDetector> detector = FeatureDetector::create("SURF");
vector<KeyPoint> keyPoints;
detector->detect(anImage, keyPoints, Mat());

如果您想要在感兴趣的区域创建一个掩码,您可以创建如下所示的掩码:

假设Source_picCV_8UC3类型,

代码语言:javascript
运行
复制
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函数。

希望这能把事情弄清楚!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9902368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档