0

我想知道我阅读的图像是黑白图像还是彩色图像。我在所有过程中都使用 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 中转换了我的图像以比较亮度直方图。

4

1 回答 1

2

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

于 2013-07-03T16:31:23.713 回答