为什么这个python程序在处理图像时会将蓝色转换为黄色?

时间:2017-03-05 10:40:30

标签: python opencv image-processing opencv3.0

问题是,我有这个代码:

import numpy as np
import cv2
from matplotlib import pyplot
img = cv2.imread('C:\Users\Niranjan\Desktop\FINAL YEAR PROJECT\Python Codes\obj.jpg')
rows,cols,ch = img.shape
pts1 = np.float32([[170,220],[466,221],[110,540],[528,541]])
pts2 = np.float32([[0,0],[530,0],[0,542],[530,542]])
M = cv2.getPerspectiveTransform(pts1,pts2)
dst = cv2.warpPerspective(img,M,(530,542))
pyplot.subplot(121),pyplot.imshow(img),pyplot.title('Input')
pyplot.subplot(122),pyplot.imshow(dst),pyplot.title('Output')
pyplot.show()

the original image

The result of the python code

所以蓝色会转换为黄色......这是否提示RGB转换为CMYK?

我应该怎么做才能让我的颜色与原作相同?

*注意:这不是广告

2 个答案:

答案 0 :(得分:3)

For historical reasons,OpenCV使用BGR颜色表示。您可以使用以下方式转换图像:

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

答案 1 :(得分:2)

使用img = img[:,:,::-1]将颜色通道从BGR混洗为RGB。

pyplot.subplot(121),pyplot.imshow(img[:,:,::-1] ),pyplot.title('Input')
pyplot.subplot(122),pyplot.imshow(dst[:,:,::-1] ),pyplot.title('Output')
pyplot.show()

以下是matplotlib输入和输出图像。

enter image description here