欢迎访问宙启技术站
智能推送

使用Python在实时视频流中检测特定颜色物体

发布时间:2023-12-26 04:59:25

在Python中使用OpenCV库可以很方便地实时检测特定颜色物体。下面是一个使用例子,用于在实时视频流中检测红色物体。

首先,我们需要安装OpenCV库。可以使用以下命令在命令行中安装:

pip install opencv-python

然后,我们创建一个Python脚本来执行以下操作:

import cv2
import numpy as np

# 设置视频捕捉
cap = cv2.VideoCapture(0)

# 定义红色的范围(在HSV颜色空间中)
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
lower_red2 = np.array([160,100,100])
upper_red2 = np.array([179,255,255])

while True:
    # 读取视频流
    ret, frame = cap.read()
    
    # 转换颜色空间为HSV
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    
    # 根据颜色范围创建掩膜
    mask1 = cv2.inRange(hsv, lower_red, upper_red)
    mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
    mask = cv2.bitwise_or(mask1, mask2)
    
    # 对原始图像和掩膜进行按位与运算,提取红色物体
    res = cv2.bitwise_and(frame, frame, mask=mask)
    
    # 显示图像
    cv2.imshow('Original', frame)
    cv2.imshow('Detection', res)
    
    # 按下'q'停止循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 关闭视频捕捉和窗口
cap.release()
cv2.destroyAllWindows()

在这个例子中,我们首先设置了视频捕捉,然后定义了红色的HSV范围。接下来,我们通过循环从摄像头中读取视频帧,将颜色空间从BGR转换为HSV,并创建一个掩膜来提取红色物体。然后,我们通过对原始图像和掩膜进行按位与运算,提取红色物体。最后,我们使用cv2.imshow()方法显示原始图像和检测结果。按下q键可以停止循环并关闭窗口。

请注意,你可以根据你想检测的颜色物体来调整HSV范围。你可以通过使用不同的颜色范围定义lower_redupper_red,来检测不同的颜色物体。

这只是一个简单的例子,你可以根据自己的需求进行更复杂的操作,比如追踪物体运动轨迹、标记检测到的物体等。