如何在灰色区域长亮像素? 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
如何在灰色区域长亮像素?
输入: 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