Обнаружение изображений в оттенках серого в Python с использованием OpenCV: несколько методов

Чтобы обнаружить изображения в оттенках серого в Python с помощью OpenCV, вы можете использовать несколько методов. Вот несколько подходов:

  1. Проверка цветового канала. Изображения в оттенках серого имеют одинаковые значения пикселей во всех цветовых каналах. Вы можете проверить, является ли изображение полутоновым, проверив количество цветовых каналов. Если изображение имеет только один канал, оно имеет оттенки серого. В OpenCV вы можете использовать функцию cv2.imread()для чтения изображения, а затем проверить количество каналов с помощью атрибута shape.
import cv2
image = cv2.imread('image.jpg')
if len(image.shape) == 2:
    print("Grayscale image")
  1. Цветовая гистограмма. Изображения в оттенках серого имеют плоскую цветовую гистограмму, поскольку в них отсутствует информация о цвете. Вы можете рассчитать гистограмму изображения с помощью функции cv2.calcHist()и изучить ее форму. Если гистограмма имеет только один канал, изображение отображается в оттенках серого.
import cv2
import numpy as np
image = cv2.imread('image.jpg')
hist = cv2.calcHist([image], [0], None, [256], [0, 256])
if len(hist.shape) == 2:
    print("Grayscale image")
  1. Диапазон интенсивности пикселей. В изображениях в оттенках серого значения пикселей варьируются от 0 до 255, что соответствует черному и белому. Вы можете проверить, является ли изображение полутоновым, проверив, что значения всех пикселей попадают в этот диапазон.
import cv2
import numpy as np
image = cv2.imread('image.jpg')
min_val = np.min(image)
max_val = np.max(image)
if min_val >= 0 and max_val <= 255:
    print("Grayscale image")