OpenCV 不保存视频

Den*_*Gor 6 python opencv

下面的代码应该捕获视频并保存它。

import cv2
import numpy as np
from skimage.filters import gaussian

capture = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('My video.avi', fourcc, 10, (640,480))

while capture.isOpened:
    ret, frame = capture.read()

    if ret==True:
        frame = gaussian(frame, sigma=5, multichannel=True)

        out.write(frame)
        cv2.imshow('My video', frame)

    if cv2.waitKey(1) == 27:
        break

capture.release()
out.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

error: OpenCV(3.4.3) D:\Build\OpenCV\opencv-3.4.3\modules\videoio\src\cap_ffmpeg.cpp:296: error: (-215:Assertion failed) image.depth() == CV_8U in function 'cv::`anonymous-namespace'::CvVideoWriter_FFMPEG_proxy::write'

如果我删除高斯模糊,代码就可以工作。怎么了?

Par*_* MA 0

import cv2
import numpy as np
from skimage.filters import gaussian
capture = cv2.VideoCapture(0)

fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')
videoWriter = cv2.VideoWriter(
    r'output_video_path', fourcc, 10.0, (640, 480))

while (True):

    ret, frame = capture.read()

    if ret:
        frame = gaussian(frame, sigma=5, multichannel=True)
        cv2.imshow('video', frame)
        frame = np.uint8(255 * frame)
        videoWriter.write(frame)

    if cv2.waitKey(1) == 27:
        break

capture.release()
videoWriter.release()

cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)