写一段python代码用opencv 读入给定的 乒乓mp4 编写代码分析每帧视频从视频画面中提取出乒乓球的遮罩然后再提取出乒乓球
的位置,并将其用矩形框标注出来。
以下是实现代码:
import cv2
# 读入视频
cap = cv2.VideoCapture('乒乓.mp4')
# 创建BackgroundSubtractor对象
fgbg = cv2.createBackgroundSubtractorMOG2()
while True:
ret, frame = cap.read() # 读取一帧视频
if not ret:
break
# 进行前景提取
fgmask = fgbg.apply(frame)
# 去噪
fgmask = cv2.medianBlur(fgmask, 5)
# 二值化
ret, thresh = cv2.threshold(fgmask, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制矩形框标注乒乓球位置
for contour in contours:
area = cv2.contourArea(contour)
if area < 100:
continue
(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(30) & 0xff == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
在代码中,我们首先创建了一个BackgroundSubtractor对象,用来进行前景提取。然后,对每一帧视频进行前景提取、去噪、二值化、查找轮廓和矩形框标注等处理操作。最后,将处理后的视频帧显示出来。
运行代码后,我们可以看到乒乓球的位置已经被标注出来了
原文地址: http://www.cveoy.top/t/topic/dQa2 著作权归作者所有。请勿转载和采集!