Python Opencv写入视频正在运行,但保存的output.avi文件为0KB

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

我尝试过不同的方法,但都不管用。 视频正在运行,但文件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',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