我在两个图像之间做了区别,并将结果与“标准”图像进行比较。通过使用命令阈值,值小于0的像素应为黑色,而具有正值的像素应为白色。但是,在此过程之后,图像仍然包含彩色像素,如红色,黄色等。
threshold(Initial, Final, 0, 255, THRESH_BINARY);
我未能弄清楚彩色像素的来源,谁都有一些想法?非常感谢。
答案 0 :(得分:2)
您是否先对图像进行灰度图像处理?如果没有,您将在二值化后在图像中看到各种R G B颜色。
// 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);
据我所知,您必须将其转换为灰度以将其二值化以获得黑白像素。
答案 1 :(得分:1)
该函数将固定级阈值应用于单通道数组
因此您需要先将图像转换为灰度以获得准确的转换