我正在使用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)
当我不将框架转换为灰色时,效果很好!
答案 0 :(得分:0)
您的问题似乎与您将VideoWriter
的最后一个参数保持为默认值这一事实有关。
您使用的构造函数具有以下签名:
VideoWriter (const String &filename, int fourcc, double fps, Size frameSize, bool isColor=true)
将最后一个参数放入false
应该可以解决您的问题。