繁体   English   中英

如何检测rgb图像格式真的是灰色的?

[英]how detect rgb image format really is gray?

我有opencv c ++的图像处理程序。 inmy程序的两个预处理路径是2种灰度图像和彩色图像。 但有时我得到的图像是灰度级,但以RGB格式存储意味着当外观图像是灰色但这个图像有3个通道。

我如何检测rgb图像格式是真的有色还是灰色?

您可以浏览像素并检查它们每次的R,G和B值是否相同。

cv::Mat image;  // your image with type CV_8UC3
bool grayscale = true;
for(int i = 0; i < image.rows; i++) {
    cv::Vec3b* ptr = image.ptr<cv::Vec3b>(i);
    for(int j = 0; j < image.cols; j++) {
        if(!(ptr[j][0] == ptr[j][1] && ptr[j][0] == ptr[j][2])) {
            grayscale = false;
            break;
        }
    }
    if(!grayscale)
        break;
}

几乎所有颜色的灰色都有red == green == blue 只需检查红色绿色和蓝色值是+10 or -10就可以了。

如果您希望使用特定形式的灰色,可以查看此网站以查看可以在RGB输入门户上形成或自我实验的相关灰色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM