opencv python将框架转换为灰色并写入新视频不起作用

时间:2018-09-19 08:54:48

标签: python opencv

我正在使用OpenCV 3.1.0.4和Python 3.6,并且试图读取视频,将每个帧转换为灰色并将其写入新视频。这是我的代码:

capture = cv2.VideoCapture(video_path)
length = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))

size = (
  int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)),
  int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
)

codec = cv2.VideoWriter_fourcc(*'DIVX')
output = cv2.VideoWriter('videofile_masked1.avi', codec, 15.0, size)

while(True):
   # Capture frame-by-frame
   ret, frame = capture.read()
   if frame is None:
     break

   frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
   output.write(frame)

capture.release()
cv2.destroyAllWindows()

运行此代码时,出现以下错误: OpenCV错误:在ipp_cvtColor中断言失败(scn == 3 || scn == 4)

当我不将框架转换为灰色时,效果很好!

1 个答案:

答案 0 :(得分:0)

您的问题似乎与您将VideoWriter的最后一个参数保持为默认值这一事实有关。

您使用的构造函数具有以下签名:

VideoWriter (const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)

将最后一个参数放入false应该可以解决您的问题。