Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
opencv python VideoWriter的问题_Python_Opencv - Fatal编程技术网

opencv python VideoWriter的问题

opencv python VideoWriter的问题,python,opencv,Python,Opencv,我一直试图让openCV python VideoWriter对象工作,但没有成功。我要做的是读取视频,抓取帧,进行一些处理,然后将其写回视频文件。我得到的错误是: Traceback (most recent call last): File "detect.py", line 35, in <module> out_video.write(processed) cv2.error: /tmp/opencv-z9Pa/opencv-2.4.9/modules/imgproc

我一直试图让openCV python VideoWriter对象工作,但没有成功。我要做的是读取视频,抓取帧,进行一些处理,然后将其写回视频文件。我得到的错误是:

Traceback (most recent call last):
File "detect.py", line 35, in <module>
    out_video.write(processed)
cv2.error: /tmp/opencv-z9Pa/opencv-2.4.9/modules/imgproc/src/color.cpp:4419: 
error: (-215) src.depth() == dst.depth() in function cvCvtColor
有人知道我可能做错了什么吗

[编辑]

我尝试了一些可能会有启发(或没有启发)的东西。因此,如果我想写原始帧,即替换

out_video.write(processed)

我找回了我的原始视频。但是,帧和处理过的对象具有相同的大小和类型!所以,现在我完全不知道发生了什么。已处理和框架形状和类型的输出为:

frame: (576, 720, 3)
processed: (576, 720, 3)
frame: <type 'numpy.ndarray'>
processed: <type 'numpy.ndarray'>
帧:(576720,3)
已处理:(576720,3)
框架:
处理:

我发现了问题所在。线路

processed = mark_boundaries(frame, segments)
实际上是在0和1之间对图像进行归一化,所以不是8位深度,这是一个问题。修复程序执行了如下操作:

processed = (processed * 255.0).astype('u1')
然后将其传递给VideoWriter.write_frame()

当您试图将图像转换为颜色空间时,函数cvtColor occours产生的错误(-215),但这是不可能的。

例如,如果您尝试将已为灰色的图像或二进制图像转换为灰色,则转换颜色将引发此错误

processed = mark_boundaries(frame, segments)
processed = (processed * 255.0).astype('u1')