Python OpenCV 乒乓球提取:使用掩码技术从视频中分离乒乓球
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()
原文地址: https://www.cveoy.top/t/topic/nK8l 著作权归作者所有。请勿转载和采集!