写一段python代码运用mask处理技术用opencv 读入给定的乒乓mp4文件地址为CUsersJionieDesktopdazuoppmp4 编写代码分析每帧视频从视频画面中提取出一个乒乓球橙黄色圆形的遮罩然后再提取出乒乓球橙黄色圆形要求提取出的画面为以乒乓球橙黄色圆形为主体的图像
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 著作权归作者所有。请勿转载和采集!