最佳实践,检测Opencv中Mat是否为黑色和白色

时间:2013-07-03 14:21:31

标签: c++ opencv image-processing colors hsl

我想知道我读的图像是黑白还是彩色图像。 我将Opencv用于我的所有流程。 为了检测它,我目前读取我的图像,将其转换为BGR2GRAY,并将原始的直方图(读作BGR)与第二个的直方图(称为B& W)进行比较。

在伪代码中,它看起来像这样:

cv::Mat img = read("img.png", -1);
cv::Mat bw = cvtColor(img.clone(), bw, CV_BGR2GRAY);

if (computeHistogram(img) == computeHistogram(bw))
     cout << "Black And White !"<< endl;

有更好的方法吗?我正在寻找能实施的最轻的算法和最佳实践。

感谢您的帮助。

编辑:我忘了说我用HSL转换图像以比较亮度直方图。

1 个答案:

答案 0 :(得分:2)

以RGB格式存储灰度图像会导致所有三个字段相等。这意味着对于以RGB格式保存的灰度图像中的每个像素,我们都有R = G = B.因此,您可以轻松地检查此图像。