Лучшая практика, чтобы определить, является ли мат черно-белым в Opencv

Я хотел бы знать, является ли изображение, которое я читаю, черно-белым или цветным изображением.
Я использую Opencv для всего моего процесса.
Чтобы обнаружить его, я в настоящее время читаю свое изображение, конвертирую его из BGR2GRAY и сравниваю гистограмму оригинала (читается как BGR) с гистограммой второго (известного как B).&Вт).

В псевдокоде это выглядит так:

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, чтобы сравнить гистограммы яркости.

0

Решение

Хранение изображений в градациях серого в формате RGB приводит к тому, что все три поля равны. Это означает, что для каждого пикселя в изображении в градациях серого, сохраненном в формате RGB, мы имеем R = G = B. Таким образом, вы можете легко проверить это для своего изображения.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]