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

Best practice, to detect if a Mat is black and White in Opencv

本文关键字:Mat 检测 是否 黑白 Opencv 最佳      更新时间:2023-10-16

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

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