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
Python 为什么skimage.io.imsave和opencv.VideoWriter的颜色不同_Python_Opencv_Scikit Image - Fatal编程技术网

Python 为什么skimage.io.imsave和opencv.VideoWriter的颜色不同

Python 为什么skimage.io.imsave和opencv.VideoWriter的颜色不同,python,opencv,scikit-image,Python,Opencv,Scikit Image,我正试图使opencv VideoWriter从经过skimage工具包修改的图像生成avi。我还遇到了skimage.io.imsave和VideoWriter.write之间的颜色差异 当我看到opencv生成的电影时,它看起来只有蓝色。但是,如果我通过skimage.io.imsave保存帧,jpg文件的颜色是正确的。 我假设在撇渣过程中发生的规范化会对我造成不好的影响,但我不确定如何将它们转换为opencv的颜色 有谁能给我一些建议,为什么会有这种差异,我应该如何解决? 我真的很感激你的

我正试图使opencv VideoWriter从经过skimage工具包修改的图像生成avi。我还遇到了skimage.io.imsave和VideoWriter.write之间的颜色差异

当我看到opencv生成的电影时,它看起来只有蓝色。但是,如果我通过skimage.io.imsave保存帧,jpg文件的颜色是正确的。 我假设在撇渣过程中发生的规范化会对我造成不好的影响,但我不确定如何将它们转换为opencv的颜色

有谁能给我一些建议,为什么会有这种差异,我应该如何解决? 我真的很感激你的建议


谢谢ZdaR。根据你的建议,我只是简单地将矩阵RGB转换成BGR,然后就成功了! 更高版本的opencv可能有cvcolor RGB2BGR,但我的环境不支持它,因此我采用传统方式实现

cframe=c.colorize(frame)
img=np.zeros((224,224,3),dtype=np.float32)
img[:,:,0]=cframe[:,:,2]
img[:,:,1]=cframe[:,:,1]
img[:,:,2]=cframe[:,:,0]
out.write((img*225.0).astype('u1'))

颜色约定代码中存在问题,第一种情况接受您提供的格式,即
BGR
,我猜,但在第二行中,您需要显式传递
RGB
图像。因此,请搜索一种方法将BGR图像转换为RGB,或者反之亦然。感谢ZdaR,我将尝试您的建议!img=np.zeros((224224,3),dtype=np.float32)img[:,:,0]=cframe[:,:,2]img[:,:,1]=cframe[:,:,1]img[:,:,2]=cframe[:,:,0]out.write((img*225.0)。astype('u1'))可以使用numpy来完成,而不是使用3个步骤,如下所示:
img=numpy.flip(cframe,axis=2)
。此外,当存在内存限制时,可以在适当的位置执行此操作
cframe=numpy.flip(cframe,axis=2)
cframe=c.colorize(frame)
img=np.zeros((224,224,3),dtype=np.float32)
img[:,:,0]=cframe[:,:,2]
img[:,:,1]=cframe[:,:,1]
img[:,:,2]=cframe[:,:,0]
out.write((img*225.0).astype('u1'))