作为学校的一项任务,我们小组必须创建一个知道目标何时得分的应用程序。这意味着球形物体通过一条线。
首先,我们尝试输入视频,让OpenCV跟踪球,然后将其输出为视频。
我已经在StackOverflow上找到了一堆其他代码片段,但是它没有用。
我正在创建一个新帖子,因为所有其他相关线程都是C ++或使用颜色检测而不是我们使用的形状检测。在将视频文件转换为一系列图像时,我也无法找到输出视频文件的明确答案。
以下是我到目前为止的代码:
import cv2
import numpy as np
cap = cv2.VideoCapture('bal.mp4')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output1.avi',fourcc, 20.0, (640,480))
while(1):
# Take each frame
ret, frame = cap.read()
if ret == True:
if ret == 0:
break
frame = cv2.medianBlur(frame,5)
cimg = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
circles = cv2.HoughCircles(cimg,3,1,20,param1=50,param2=30,minRadi$
if circles == None:
print "NoneType"
break
circles = np.uint16(np.around(circles.astype(np.double),3))
for i in circles[0,:]:
# draw the outer circle
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
cv2.imwrite('test.jpg',cimg)
out.write(cimg)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
out.release()
cv2.destroyAllWindows()
我们获得了工作图像,但视频无法通过VLC或任何其他媒体播放器播放。
这是该计划的图片:
此问题现在正在变成可播放的视频。
提前致谢。
答案 0 :(得分:0)
不确定您最终是否可以使用它,但是将其更改为 mp4 在我的 Mac 上对我有用
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
out = cv2.VideoWriter('static/video/outpy.mp4', 0x7634706d, 20, (frame_width, frame_height))