为什么我过滤后的图像(应该是二进制的)仍然包含彩色部分?(C++中的OpenCV)



我在两张图像之间进行差异处理,并将结果与"标准"图像进行比较。通过使用threshold命令,值低于0的像素应为黑色,而值为正值的像素为白色。然而,经过处理后的图像仍然包含彩色像素,如红色、黄色等

threshold(Initial, Final, 0, 255, THRESH_BINARY);

我没能弄清楚彩色像素的起源,有人有什么想法吗?非常感谢。

您先对图像进行灰度处理了吗?如果你不这样做,一旦你对图像进行二值化,你就会在图像中看到各种RGB颜色

// C
IplImage *im_rgb  = cvLoadImage("image.jpg");
IplImage *im_gray = cvCreateImage(cvGetSize(im_rgb),IPL_DEPTH_8U,1);
cvCvtColor(im_rgb,im_gray,CV_RGB2GRAY);
// C++
Mat im_rgb  = imread("image.jpg");
Mat im_gray;
cvtColor(im_rgb,im_gray,CV_RGB2GRAY);

据我所知,你必须将其转换为灰度,然后对其进行二值化,才能得到黑白像素。

根据http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=threshold#threshold

该功能将固定电平阈值应用于单通道阵列

因此,您需要先将图像转换为灰度,以获得准确的转换

相关内容

  • 没有找到相关文章

最新更新