Python和OpenCV:尝试保存视频时,“在函数ipp_cvtColor中错误(-215)scn == 3 || scn == 4”

时间:2018-09-20 10:27:29

标签: python opencv python-3.5 opencv3.0

在Mac上,以下代码行让我苦苦挣扎了一段时间,这使我发回错误

  

错误:(-215)scn == 3 || scn == 4 in ipp_cvtColor“

在我尝试编写视频out.write(out_frame)的那一行

这是我的代码:

import numpy as np
import cv2
from scipy import ndimage, misc

dir_vid='/Users/qandre/Pictures/Videos/video_input.mp4'
cap = cv2.VideoCapture(dir_vid)

fps = cap.get(cv2.CAP_PROP_FPS)
w = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
h = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)

fourcc = cv2.VideoWriter_fourcc('m','p','4','v')
out = cv2.VideoWriter('/Users/qandre/Pictures/Videos/video_output.mp4', fourcc, int(fps), (int(w), int(h)), isColor=False)
if not out :
    print("!!! Failed VideoWriter: invalid parameters")
    sys.exit(1)

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

    if ret is True:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    else:
        continue

    edges = cv2.Canny(gray,50,150)
    out.write(edges)

    # Display the resulting frame
    cv2.imshow('frame',edges)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

out.release()
cap.release()
cv2.destroyAllWindows()

那么...可能有什么问题吗?

由于cvtColor()函数,我必须精确地说,只有在将框架灰度旋转时才会出现此错误。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的答案:

.MP4一直在寻找要写入的3通道BGR图像,但由于我试图写入灰度图像,所以我只提供了一个单通道图像

尝试这样做:

edges = cv2.cvtColor(edges,cv2.COLOR_GRAY2BGR)

将我的灰度图像转换为BGR图像。虽然我的像素值保持灰色,但是这会将边缘更改为3通道图像,因此现在可以使用了。