无法在opencv 3中保存视频

时间:2017-09-22 18:52:13

标签: python-3.x opencv

我正在尝试对视频应用Canny过滤器,以在output.mp4文件中生成带有canny过滤器的视频。 我发现输出文件的大小是1千字节,尽管原始视频大小是30兆字节

这是我使用的代码:

import numpy as np
import cv2
Video = cv2.VideoCapture('video.mp4')
width = int(Video.get(cv2.CAP_PROP_FRAME_WIDTH) + 0.5)
height = int(Video.get(cv2.CAP_PROP_FRAME_HEIGHT) + 0.5)
fourcc = cv2.VideoWriter_fourcc(*'mp4v') 
out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (width, height))
while(Video.isOpened()):
ret, frame = Video.read()
if ret==True:
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    edges = cv2.Canny(gray, 100, 100)
    cv2.imshow('frame',edges)
    out.write(edges)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

Video.release()
out.release()
cv2.destroyAllWindows()

1 个答案:

答案 0 :(得分:2)

因为您正在编写灰色图像,所以必须通过[+-]?[0-9]+([\.][0-9]{0,2})[TRS][trs][PBC][pbc]? 获取VideoWriter的False值。
只需将isColor行更改为:

out =

另外,当你要将out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (width, height), False) 放在他们面前时,为什么要在宽度和高度上加0.5?请注意,VideoWriter必须具有与您要通过它的帧相同的w和h,因此如果您在不调整正在编写的帧的情况下更改w和h,则VideoWriter将无法工作(尽管在您的示例中) 0.5没有做任何事情,因为int只会把它放在一边)。