在OpenCv,Python中保存相同图像时无法获得相同颜色的原始图像

时间:2018-07-11 13:28:37

标签: python python-2.7 opencv scipy

我写了一个代码来旋转图像并保存它们。所以我用OpenCv保存旋转的图像。保存旋转后的图像后,它在图像上变为蓝色。

操作系统:Ubuntu 16.04

这是代码:

from scipy.ndimage import rotate
from scipy.misc import imread, imshow
import cv2
count = 0
while True:
    if count<230:
    filename = 'frame'+str(count)+'.jpg'
    print(filename)
    img = imread(filename)

    rotate_img = rotate(img, 90)
    cv2.imwrite(filename,rotate_img)
    count = count + 1
        continue
    else :
    break

为什么颜色会这样变化?我该怎么办? 任何帮助,将不胜感激!谢谢您的进阶!

图片(保存前):

enter image description here

图片(保存后):

enter image description here

2 个答案:

答案 0 :(得分:2)

这里的问题是,您正在使用scipy的imread创建RGB图像,并使用OpenCV imwrite假设它们是BGR来写入图像。

反转图像的第一和第三通道。

答案 1 :(得分:0)

我可以解决问题。我必须将图像的颜色转换为RGB颜色。

cv2.cvtColor(rotate_img, cv2.COLOR_BGR2RGB)

这是代码:

from scipy.ndimage import rotate
from scipy.misc import imread, imshow
import cv2
count = 0
while True:
    if count<230:
    filename = 'frame'+str(count)+'.jpg'
    print(filename)
    img = imread(filename)

    rotate_img = rotate(img, 90)
    #convert color of image before saving
    rgbImg = cv2.cvtColor(rotate_img, cv2.COLOR_BGR2RGB)
    cv2.imwrite(filename,rgbImg)
    count = count + 1
        continue
    else :
    break