Я хотел бы знать, является ли изображение, которое я читаю, черно-белым или цветным изображением.
Я использую 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, чтобы сравнить гистограммы яркости.
Хранение изображений в градациях серого в формате RGB приводит к тому, что все три поля равны. Это означает, что для каждого пикселя в изображении в градациях серого, сохраненном в формате RGB, мы имеем R = G = B. Таким образом, вы можете легко проверить это для своего изображения.
Других решений пока нет …