【发布时间】:2013-08-15 05:32:06
【问题描述】:
我有一张灰度图像 我想将所有白色像素(纯白色 - 255)转换为黑色(0) 只有那些颜色,不是所有的灰度 我怎样才能做到这一点? 谢谢! 罗恩
【问题讨论】:
-
将图像读入矩阵,循环遍历矩阵并检查 255 和 0 值并相应更新。
我有一张灰度图像 我想将所有白色像素(纯白色 - 255)转换为黑色(0) 只有那些颜色,不是所有的灰度 我怎样才能做到这一点? 谢谢! 罗恩
【问题讨论】:
您可以执行以下操作。
使用inRange() 为您的图像设置阈值。
Mat image; // your original image
Mat mask;
void inRange(image, Scalar(255), Scalar(255), mask)
如果image 中的对应像素等于255,则输出mask 将是一个二进制掩码,其像素设置为255(即如果像素值介于255 和255 之间,则包括边界)。
使用copyTo() 将black_image(您想要的替代颜色)复制到原始image 到mask。
Mat black_image(image.size(), CV_8U, Scalar(0)); // all zeros image
black_image.copyTo(image, mask);
【讨论】:
使用 cvThreshold,在此处查看最后一种情况“阈值为零,倒置”:http://docs.opencv.org/doc/tutorials/imgproc/threshold/threshold.html
将阈值设置为 254,我认为这将解决您的问题。
【讨论】:
cv::threshold(input, output, 254, 255, cv::THRESH_TOZERO_INV);