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()

Python OpenCV 乒乓球提取:使用掩码技术从视频中分离乒乓球

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

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