首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在感兴趣区域中使用findContours,等高线坐标错误

在感兴趣区域中使用findContours,等高线坐标错误
EN

Stack Overflow用户
提问于 2012-11-09 18:31:09
回答 1查看 3K关注 0票数 0

我使用了Mat的重载操作符,在前面的集合ROI中使用了函数findContours。轮廓可以很好地提取出来,但它们的坐标不是全局的,它们属于ROI。因此,当我想要将它们绘制到图像中时,它们都被绘制在定义我的ROI的矩形中。我想我在这里遗漏了一些基本的东西。有谁有主意吗?

下面是代码片段。

代码语言:javascript
运行
复制
Mat roi(img_grad, inflated_rect);
findContours( roi, canidates, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );
for(int i = 0; i < canidates.size(); ++i) {
   drawContours(mat, canidates, i, Scalar(0,0,255), 1, CV_AA, hierarchy, 1, Point(0,0));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-09 18:50:42

findContours返回与你的投资回报率相关的坐标。

因此,您应该按ROI偏移量移动所有点(请注意最后一个参数):

代码语言:javascript
运行
复制
for(int i = 0; i < canidates.size(); ++i) {
    drawContours(mat, canidates, i, Scalar(0,0,255), 1, CV_AA, hierarchy, 1, inflated_rect.tl());
}

或者获取另一个用于绘图的ROI:

代码语言:javascript
运行
复制
for(int i = 0; i < canidates.size(); ++i) {
    Mat roi2(mat, inflated_rect);
    drawContours(roi2, canidates, i, Scalar(0,0,255), 1, CV_AA, hierarchy, 1, Point(0,0));
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13306341

复制
相关文章

相似问题

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