Методы определения цвета в изображениях и видео: примеры кода на Python

Под «обнаружением цвета» понимается процесс идентификации и извлечения цветов из изображений или видео. Существует несколько методов определения цвета, и я приведу вам несколько примеров с использованием кода Python. Вот несколько популярных методов:

  1. Использование OpenCV и кластеризации K-средних:
import cv2
import numpy as np
def color_detection(image_path, num_colors):
    # Load the image
    image = cv2.imread(image_path)
    # Reshape the image to a 2D array of pixels
    pixels = image.reshape(-1, 3)
    # Convert the pixel values to floating point
    pixels = np.float32(pixels)
    # Define criteria for K-means clustering
    criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 200, 0.1)
    # Perform K-means clustering
    _, labels, centers = cv2.kmeans(pixels, num_colors, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS)
    # Convert the centers to 8-bit values
    centers = np.uint8(centers)
    # Reshape the labels to the original image shape
    labels = labels.reshape(image.shape[:2])
    # Get the dominant colors
    dominant_colors = centers[labels]
    return dominant_colors
# Example usage
image_path = 'path/to/your/image.jpg'
num_colors = 5
dominant_colors = color_detection(image_path, num_colors)
print(dominant_colors)
  1. Использование scikit-learn и моделей гауссовой смеси (GMM):
import cv2
import numpy as np
from sklearn.mixture import GaussianMixture
def color_detection(image_path, num_colors):
    # Load the image
    image = cv2.imread(image_path)
    # Reshape the image to a 2D array of pixels
    pixels = image.reshape(-1, 3)
    # Fit a Gaussian Mixture Model
    gmm = GaussianMixture(n_components=num_colors)
    gmm.fit(pixels)
    # Get the dominant colors
    dominant_colors = gmm.means_.round().astype(int)
    return dominant_colors
# Example usage
image_path = 'path/to/your/image.jpg'
num_colors = 5
dominant_colors = color_detection(image_path, num_colors)
print(dominant_colors)
  1. Использование библиотеки Pillow:
from PIL import Image
import numpy as np
def color_detection(image_path, num_colors):
    # Load the image
    image = Image.open(image_path)
    # Resize the image if necessary
    # image = image.resize((width, height))
    # Convert the image to a numpy array
    pixels = np.array(image)
    # Reshape the array to a 2D array of pixels
    pixels = pixels.reshape(-1, 3)
    # Get the unique colors and their counts
    unique_colors, counts = np.unique(pixels, axis=0, return_counts=True)
    # Sort the colors by count in descending order
    sorted_indices = np.argsort(counts)[::-1]
    sorted_colors = unique_colors[sorted_indices]
    # Get the dominant colors
    dominant_colors = sorted_colors[:num_colors]
    return dominant_colors
# Example usage
image_path = 'path/to/your/image.jpg'
num_colors = 5
dominant_colors = color_detection(image_path, num_colors)
print(dominant_colors)

Это всего лишь несколько примеров методов определения цвета с использованием различных библиотек и алгоритмов. Конкретный метод, который вы выберете, может зависеть от ваших требований и желаемого результата.