import cv2

读入视频

cap = cv2.VideoCapture('C:/Users/Jionie/Desktop/dazuo/pp.mp4')

设置颜色范围

lower_color = (0, 100, 180) upper_color = (20, 255, 255)

while True: # 读取一帧 ret, frame = cap.read() if not ret: break

# 将图像转换为HSV格式
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

# 根据颜色范围创建掩膜
mask = cv2.inRange(hsv, lower_color, upper_color)

# 膨胀掩膜以填充空洞
mask = cv2.dilate(mask, None, iterations=2)

# 查找轮廓
contours, hierarchy = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 提取最大的轮廓
if len(contours) > 0:
    c = max(contours, key=cv2.contourArea)

    # 计算轮廓的最小外接圆
    ((x, y), radius) = cv2.minEnclosingCircle(c)

    # 绘制圆形
    cv2.circle(frame, (int(x), int(y)), int(radius), (0, 255, 255), 2)

    # 提取乒乓球图像
    ball = frame[int(y-radius):int(y+radius), int(x-radius):int(x+radius)]

    # 显示图像
    cv2.imshow('frame', frame)
    cv2.imshow('ball', ball)

# 按下q键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

释放资源

cap.release() cv2.destroyAllWindows(


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

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