写一段python代码运用mask处理技术用opencv 读入给定的乒乓mp4文件地址为CUsersJionieDesktopdazuoppmp4 编写代码分析每帧视频从视频画面中提取出一个乒乓球橙黄色圆形的遮罩然后再提取出乒乓球橙黄色圆形要求提取出的画面为以乒乓球橙黄色圆形的图像只包含乒乓球的图像尽量不能有杂质投屏在一个黑色背景的视频中
import cv2 import numpy as np
读入视频
cap = cv2.VideoCapture('C:\Users\Jionie\Desktop\dazuo\pp.mp4')
定义橙黄色范围
lower_orange = np.array([10, 100, 100]) upper_orange = np.array([20, 255, 255])
定义黑色背景
black_bg = np.zeros((720, 1280, 3), np.uint8)
循环遍历每一帧视频
while cap.isOpened(): ret, frame = cap.read() if not ret: break
# 将当前帧转为HSV颜色空间
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# 通过inRange函数获取橙黄色的遮罩
mask = cv2.inRange(hsv, lower_orange, upper_orange)
# 通过形态学操作去除噪点
kernel = np.ones((5, 5), np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
# 通过遮罩提取出乒乓球图像
pingpong = cv2.bitwise_and(frame, frame, mask=mask)
# 将乒乓球图像投屏在黑色背景上
black_bg[360:1080, 0:1280] = pingpong[360:1080, 0:1280]
# 显示结果
cv2.imshow('Ping Pong Ball', black_bg)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
释放资源
cap.release() cv2.destroyAllWindows(
原文地址: http://www.cveoy.top/t/topic/dQmu 著作权归作者所有。请勿转载和采集!