写一段python代码用opencv 读入给定的 乒乓mp4文件地址为CUsersJionieDesktop 编写代码分析每帧视频从视频画面中提取出乒乓球的遮罩然后再提取出乒乓球
的轮廓,最后在原视频上用矩形框标出乒乓球。
以下是示例代码:
import cv2
# 读入视频文件
cap = cv2.VideoCapture('C:/Users/Jionie/Desktop/乒乓.mp4')
# 创建背景差分器
fgbg = cv2.createBackgroundSubtractorMOG2()
while True:
# 读取一帧视频
ret, frame = cap.read()
if not ret:
break
# 进行背景差分,提取出前景
fgmask = fgbg.apply(frame)
# 根据前景生成遮罩
thresh = cv2.threshold(fgmask, 128, 255, cv2.THRESH_BINARY)[1]
# 提取轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓,找到符合条件的乒乓球
for contour in contours:
area = cv2.contourArea(contour)
if area > 1000:
# 用矩形框标出乒乓球
x,y,w,h = cv2.boundingRect(contour)
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
# 显示处理后的视频帧
cv2.imshow('frame', frame)
# 按q键退出程序
if cv2.waitKey(25) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
运行代码后,会打开一个窗口,显示处理后的视频帧。程序会自动提取出乒乓球的轮廓,并用矩形框标出乒乓球。按q键退出程序
原文地址: http://www.cveoy.top/t/topic/dQbG 著作权归作者所有。请勿转载和采集!