如何在灰色区域长亮像素? OpenCV C++

How to grow bright pixels in grey region? OpenCV C++

如何在灰色区域长亮像素?

输入: image

输出:image

我的回答比起平时的努力还是有点帮助的,但是这么点力气也很难调起提问的热情...

您可以使用 OpenCV findContours() - 文档 here 解决您的问题。您需要确保使用检索模式 CV_RETR_TREE.

然后您需要编写一个循环,遍历找到的所有轮廓。在循环中,您需要寻找一个轮廓:

  • a) 的颜色为 white 并且
  • b) 有一个颜色为 grey.
  • 的父级

关于层次结构如何工作有一个体面的解释here

Mat im = imread("ask.png", 0);
Mat mat;
mat = im==255;
    findContours( mat, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);
    for( size_t i = 0; i< contours.size(); i++ )
      {
        floodFill(mat, contours[i].at(0), 255, 0, Scalar(128), Scalar(255), FLOODFILL_FIXED_RANGE);
      }
    mat = mat==255;                // output image