Освоение распознавания цвета с помощью OpenCV: раскрытие магии компьютерного зрения

Обнаружение цвета – это увлекательный аспект компьютерного зрения, который позволяет машинам идентифицировать и анализировать цвета на изображениях и видео. Он находит множество применений: от отслеживания объектов и сегментации изображений до робототехники и дополненной реальности. В этой статье мы рассмотрим различные методы определения цвета с использованием OpenCV, мощной библиотеки компьютерного зрения с открытым исходным кодом. Итак, наденьте шляпу программиста и давайте окунемся в красочный мир OpenCV!

Метод 1: определение порога в пространстве RGB
Один из самых простых подходов к обнаружению цвета — определение порога в цветовом пространстве RGB. Вот пример фрагмента кода на Python с использованием OpenCV:

import cv2
import numpy as np
image = cv2.imread('image.jpg')
lower_red = np.array([0, 0, 100])
upper_red = np.array([100, 100, 255])
mask = cv2.inRange(image, lower_red, upper_red)
result = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow('Color Detection', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Метод 2: цветовая сегментация с использованием пространства HSV
Цветовое пространство HSV (оттенок, насыщенность, значение) часто является предпочтительным для определения цвета из-за его способности эффективно разделять информацию о цвете. Вот пример фрагмента кода с использованием цветового пространства HSV:

import cv2
import numpy as np
image = cv2.imread('image.jpg')
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
mask = cv2.inRange(hsv_image, lower_red, upper_red)
result = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow('Color Detection', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

Метод 3: использование цветовых гистограмм
Цветовые гистограммы обеспечивают статистическое представление распределения цвета на изображении. Их можно использовать для поиска цветных изображений и определения цвета. Вот пример фрагмента кода для определения цвета с помощью гистограмм:

import cv2
import numpy as np
image = cv2.imread('image.jpg')
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hist = cv2.calcHist([hsv_image], [0], None, [180], [0, 180])
hist = cv2.normalize(hist, hist, 0, 255, cv2.NORM_MINMAX).flatten()
target_color = np.array([10])  # Target color with hue value 10
result = cv2.calcBackProject([hsv_image], [0], hist, [0, 180], 1)
result = cv2.bitwise_and(image, image, mask=result)
cv2.imshow('Color Detection', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

В этой статье мы рассмотрели несколько методов определения цвета с помощью OpenCV. Мы начали с простого определения порогов в цветовом пространстве RGB, а затем провели цветовую сегментацию с использованием цветового пространства HSV. Наконец, мы представили концепцию цветовых гистограмм для более совершенных методов определения цвета. OpenCV предоставляет универсальный набор инструментов для управления и анализа цветов, открывая мир возможностей для приложений в области компьютерного зрения.

Итак, возьмите свое любимое изображение и начните экспериментировать с методами определения цвета OpenCV. Раскройте возможности компьютерного зрения и воплотите свои проекты в жизнь с яркими цветами!