gpt4 book ai didi

c++ - 用于 C++ 图像分析的 OpenCV 二进制图像掩码

转载 作者:可可西里 更新时间:2023-11-01 18:03:55 25 4
gpt4 key购买 nike

我正在尝试分析一些图像,这些图像在图像外部周围有很多噪点,但内部有一个清晰的圆形中心和一个形状。中心是我感兴趣的部分,但外部噪声正在影响我对图像的二进制阈值处理。

为了忽略噪声,我试图设置一个已知中心位置和半径的圆形 mask ,从而使该圆圈外的所有像素都变为黑色。我认为圆圈内的所有内容现在都可以很容易地使用二进制阈值进行分析。

我只是想知道是否有人可以为我指明解决此类问题的正确方向?我看过这个解决方案:How to black out everything outside a circle in Open CV但是我的一些约束不同,我对加载源图像的方法感到困惑。

提前致谢!

最佳答案

//First load your source image, here load as gray scale
cv::Mat srcImage = cv::imread("sourceImage.jpg", CV_LOAD_IMAGE_GRAYSCALE);

//Then define your mask image
cv::Mat mask = cv::Mat::zeros(srcImage.size(), srcImage.type());

//Define your destination image
cv::Mat dstImage = cv::Mat::zeros(srcImage.size(), srcImage.type());

//I assume you want to draw the circle at the center of your image, with a radius of 50
cv::circle(mask, cv::Point(mask.cols/2, mask.rows/2), 50, cv::Scalar(255, 0, 0), -1, 8, 0);

//Now you can copy your source image to destination image with masking
srcImage.copyTo(dstImage, mask);

然后对您的 dstImage 进行进一步处理。假设这是您的源图像:

enter image description here

然后上面的代码给你这个作为灰度输入:

enter image description here

这是您创建的二进制掩码:

enter image description here

这是屏蔽操作后的最终结果:

enter image description here

关于c++ - 用于 C++ 图像分析的 OpenCV 二进制图像掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31554187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com