gpt4 book ai didi

python - 为什么 skimage.io.imsave 和 opencv.VideoWriter 之间的颜色不同

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:59 24 4
gpt4 key购买 nike

我正在尝试让 opencv VideoWriter 从 skimage-kit 修改的图像生成 avi。我遇到了 skimage.io.imsave 和 VideoWriter.write 之间的颜色差异。

当我看到由 opencv 生成的电影时,它看起来只有蓝色。但是,如果我通过 skimage.io.imsave 保存帧,则 jpg 文件具有正确的颜色。我认为 skimage 中发生的标准化会对我造成不好的影响,但我不确定如何将它们转换为 opencv 收集颜色。

任何人都可以建议为什么会产生差异以及我应该如何解决它?我非常感谢任何建议。

result of imsave,which I want result of output.avi

import numpy
import cv2
from colorizer import Colorizer #returns modified 224*224 color image using skimage kit
import skimage

c=Colorizer()
cap = cv2.VideoCapture('test.mp4')
fourcc = cv2.cv.CV_FOURCC(*'MJPG')
out = cv2.VideoWriter('output.avi',fourcc, 12.0, (224,224))
i=0
while(cap.isOpened()):
ret, frame = cap.read()
cframe=c.colorize(frame)
#it outputs correct color image
skimage.io.imsave("result/%d.jpg" % i, cframe)

#it outputs wrong color
out.write(skimage.img_as_ubyte(cframe))
i=i+1
cap.release()
out.release()
cv2.destroyAllWindows()

最佳答案

感谢 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'))

关于python - 为什么 skimage.io.imsave 和 opencv.VideoWriter 之间的颜色不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35622420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com