二进制矩阵中的形态填充晕

时间:2016-06-15 17:39:54

标签: opencv image-processing

img

有没有办法使用OpenCV将晕圈的中心孔设置为白色像素,这样我才能得到一个纯白色圆圈?我尝试过使用扩张和侵蚀形态学功能。它们使图像更清晰(如您所见),但中心仍为黑色。

1 个答案:

答案 0 :(得分:3)

您可以简单地找到外部轮廓,然后填充整个轮廓:

enter image description here

代码:

#include <opencv2\opencv.hpp>
#include <vector>
using namespace std;
using namespace cv;

int main()
{
    // Read grayscale image
    Mat1b img = imread("path_to_image", IMREAD_GRAYSCALE);

    // Find external contour
    vector<vector<Point>> contours;
    findContours(img.clone(), contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);

    // Check that you find something
    if (!contours.empty())
    {
        // Fill the first (and only) contour with white
        drawContours(img, contours, 0, Scalar(255), CV_FILLED);
    }

    // Show result
    imshow("Filled", img);
    waitKey();

    return 0;
}