以下是使用 OpenCV 进行红色、蓝色和绿色物体识别的示例代码:

import cv2
import numpy as np

def detect_color(image):
    # 将图像从BGR颜色空间转换为HSV颜色空间
    hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

    # 定义红色、蓝色和绿色的HSV颜色范围
    red_lower = np.array([0, 100, 100])
    red_upper = np.array([10, 255, 255])
    blue_lower = np.array([110, 100, 100])
    blue_upper = np.array([130, 255, 255])
    green_lower = np.array([50, 100, 100])
    green_upper = np.array([70, 255, 255])

    # 根据颜色范围创建掩膜
    red_mask = cv2.inRange(hsv_image, red_lower, red_upper)
    blue_mask = cv2.inRange(hsv_image, blue_lower, blue_upper)
    green_mask = cv2.inRange(hsv_image, green_lower, green_upper)

    # 对掩膜进行形态学处理以去除噪声
    kernel = np.ones((5, 5), np.uint8)
    red_mask = cv2.morphologyEx(red_mask, cv2.MORPH_OPEN, kernel)
    blue_mask = cv2.morphologyEx(blue_mask, cv2.MORPH_OPEN, kernel)
    green_mask = cv2.morphologyEx(green_mask, cv2.MORPH_OPEN, kernel)

    # 找到物体的轮廓
    contours, _ = cv2.findContours(red_mask + blue_mask + green_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    # 标记红色物体的轮廓
    for contour in contours:
        area = cv2.contourArea(contour)
        if area > 100:  # 可以根据实际情况调整面积阈值
            cv2.drawContours(image, [contour], -1, (0, 0, 255), 2)
            cv2.putText(image, 'Red', (contour[0][0][0], contour[0][0][1]), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 0, 255), 2)

    # 标记蓝色物体的轮廓
    for contour in contours:
        area = cv2.contourArea(contour)
        if area > 100:  # 可以根据实际情况调整面积阈值
            cv2.drawContours(image, [contour], -1, (255, 0, 0), 2)
            cv2.putText(image, 'Blue', (contour[0][0][0], contour[0][0][1]), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2)

    # 标记绿色物体的轮廓
    for contour in contours:
        area = cv2.contourArea(contour)
        if area > 100:  # 可以根据实际情况调整面积阈值
            cv2.drawContours(image, [contour], -1, (0, 255, 0), 2)
            cv2.putText(image, 'Green', (contour[0][0][0], contour[0][0][1]), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)

    return image

# 读取图像
image = cv2.imread('image.jpg')

# 调用函数进行颜色识别和标记
result = detect_color(image)

# 显示结果图像
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

请确保替换代码中的'image.jpg'为您的图像文件路径。这段代码会在图像上标记出红色、蓝色和绿色物体的轮廓,并在轮廓旁边显示颜色名称。

OpenCV 图像识别:找出红色、蓝色或绿色物体并标记轮廓

原文地址: https://www.cveoy.top/t/topic/o70M 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录