Python Opencv写入视频正在运行,但保存的output.avi文件为0KB
我尝试过不同的方法,但都不管用。 视频正在运行,但文件output.avi为空 这是代码Python Opencv写入视频正在运行,但保存的output.avi文件为0KB,python,numpy,opencv,Python,Numpy,Opencv,我尝试过不同的方法,但都不管用。 视频正在运行,但文件output.avi为空 这是代码 import cv2 vid=cv2.VideoCapture(0) if (not vid.isOpened()): print 'Error' size = (int(vid.get(3)), int(vid.get(4))) fourcc = cv2.cv.CV_FOURCC('M','J','P','G') newVideo=cv2.VideoWriter('output.avi',four
import cv2
vid=cv2.VideoCapture(0)
if (not vid.isOpened()):
print 'Error'
size = (int(vid.get(3)), int(vid.get(4)))
fourcc = cv2.cv.CV_FOURCC('M','J','P','G')
newVideo=cv2.VideoWriter('output.avi',fourcc,20.0,(640,360))
while(vid.isOpened()):
ret,frame=vid.read()
if ret is True:
frame=cv2.flip(frame,0)
newVideo.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1)& 0xFF==ord('q'):
break
else:
break
vid.release()
newVideo.release()
cv2.destroyAllWindows()
问题很简单,您正在阅读框架,但您正在尝试以不同的大小编写它们 解决方案在代码中。您定义了:
size = (int(vid.get(3)), int(vid.get(4)))
但你没有像这样使用它:
newVideo=cv2.VideoWriter('output.avi',fourcc,20.0,size)
您将大小设置为手动(640360),这不是捕获帧的大小。问题很简单,您正在读取帧,但尝试以不同的大小写入 解决方案在代码中。您定义了:
size = (int(vid.get(3)), int(vid.get(4)))
但你没有像这样使用它:
newVideo=cv2.VideoWriter('output.avi',fourcc,20.0,size)
您可以手动设置大小(640360),这不是捕获帧的大小。您需要确保输出帧的尺寸和初始化的
VideoWriter
尺寸相同
cv2.调整大小(帧,(640360))
但是,我不确定您是否正在使用python3
。因为print'Error'
和fourcc=cv2.cv.cv\u fourcc('M','J','P','G')
不是python3
语句
对于python2
,答案将是:
#在指定帧为RGB的参数的和处添加true。
newVideo=cv2.VideoWriter('output.avi',fourcc,20.0,(640360),True)
.
.
如果ret为真:
帧=cv2。翻转(帧,0)
frame=cv2.resize(frame,(640360))#缺少语句
newVideo.write(帧)
cv2.imshow(“帧”,帧)
.
.
对于python3
,答案将是:
导入cv2
vid=cv2.视频捕获(0)
如果没有,请参阅isopend():
打印('错误')
fourcc=cv2.视频编写器_fourcc(*“MJPG”)
newVideo=cv2.VideoWriter('output.avi',fourcc,20.0,(640360),True)
而vid.isopend():
ret,frame=vid.read()
如果ret:
帧=cv2。翻转(帧,0)
frame=cv2。调整大小(frame,(640360))
newVideo.write(帧)
cv2.imshow(“帧”,帧)
如果(cv2.waitKey(1)&0xFF)=ord('q'):
打破
其他:
打破
cv2.destroyAllWindows()
视频发布()
newVideo.release()
您需要确保输出帧的尺寸和初始化的VideoWriter
尺寸相同
cv2.调整大小(帧,(640360))
但是,我不确定您是否正在使用python3
。因为print'Error'
和fourcc=cv2.cv.cv\u fourcc('M','J','P','G')
不是python3
语句
对于python2
,答案将是:
#在指定帧为RGB的参数的和处添加true。
newVideo=cv2.VideoWriter('output.avi',fourcc,20.0,(640360),True)
.
.
如果ret为真:
帧=cv2。翻转(帧,0)
frame=cv2.resize(frame,(640360))#缺少语句
newVideo.write(帧)
cv2.imshow(“帧”,帧)
.
.
对于python3
,答案将是:
导入cv2
vid=cv2.视频捕获(0)
如果没有,请参阅isopend():
打印('错误')
fourcc=cv2.视频编写器_fourcc(*“MJPG”)
newVideo=cv2.VideoWriter('output.avi',fourcc,20.0,(640360),True)
而vid.isopend():
ret,frame=vid.read()
如果ret:
帧=cv2。翻转(帧,0)
frame=cv2。调整大小(frame,(640360))
newVideo.write(帧)
cv2.imshow(“帧”,帧)
如果(cv2.waitKey(1)&0xFF)=ord('q'):
打破
其他:
打破
cv2.destroyAllWindows()
视频发布()
newVideo.release()
知道问题出在哪里吗?你做过调试吗?知道问题出在哪里吗?你做过任何调试吗?文件大小仍然是0kb,我已经像你说的那样更改了,但是显示的是相同的0kb文件。我可以保证在发布之前我已经测试了代码。但是你的python版本是什么呢?我的python版本是Python2.7Ok,那么让我再检查一下。由于我已经在python3.7上进行了测试,您的视频保存在目录中的位置仍然是0kb文件大小,我已经按照您所说的进行了更改,但是显示的是相同的0kb文件。我可以保证在发布之前我已经测试了代码。但是你的python版本是什么呢?我的python版本是Python2.7Ok,那么让我再检查一下。由于我在python3.7上进行了测试,您的视频保存在目录中的位置仍然相同,问题avi文件大小为0kb问题相同,问题avi文件大小为0kb