我在两张图像之间进行差异处理,并将结果与"标准"图像进行比较。通过使用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
该功能将固定电平阈值应用于单通道阵列
因此,您需要先将图像转换为灰度,以获得准确的转换