【问题标题】:Changing values of objects in image opencv c++更改图像opencv c ++中对象的值
【发布时间】:2017-04-21 17:03:48
【问题描述】:

我几乎没有图像处理方面的经验,所以如果我的问题有些明显,请原谅。但是在google和stackoverflow上搜索后,我仍然不知道如何完成我的任务。 我想要做的是转换矩阵,如下图所示:

我搜索了抓取剪切、均值偏移、canny 边缘检测、区域增长和合并,但我没有找到一种方法来实现它们来解决我的问题。我关心这种方法的工作速度有多快,而上述所有这些看起来都相当复杂和缓慢。

附言。抱歉我的英语很差,但这不是我的母语。

【问题讨论】:

  • 可能使用 funcitoncv::floodFill 是一种方法。首先将所有 1 转换为表示“未分配”的值,例如 255。然后遍历图像中的所有像素,如果其值“未分配”,则使用 fill_value 进行泛洪填充。每次cv::floodFill 调用后增加fill_value
  • Google 用于连接组件标签。并搜索有关如何使用 cv::connectedComponents 的示例

标签: c++ opencv image-processing image-segmentation


【解决方案1】:

在我看来,它像 “Connected Component”“Blob Analysis”,这将是 OpenCV 的 “connectedComponents” 的工作 -感谢@Miki。基本上,您会在黑色背景 (0s) 上找到连接的白色像素 (1s) 的斑点,并为每个识别的斑点增加标签。

“标签”可能是您的另一个搜索词。

【讨论】:

  • 简单斑点检测器用于在灰度图像中提取具有几乎相等强度(加上最终形状、大小和其他标准)的斑点。所以这不是正确的工具。这是连接组件标签,您可以使用 cv::connectedComponents
  • 非常感谢 Miki,它有效!值得一提的是,背景必须是黑色的(值 = 0),否则 connectedComponents 将无法正常工作。
猜你喜欢
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
相关资源
最近更新 更多