bho*_*bar 53 python rgb opencv image colors
我在Python OpenCV中加载彩色图像并绘制相同的图像.然而,我得到的图像的颜色都混淆了.
这是代码:
import cv2
import numpy as np
from numpy import array, arange, uint8
from matplotlib import pyplot as plt
img = cv2.imread('lena_caption.png', cv2.IMREAD_COLOR)
bw_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
images = []
images.append(img)
images.append(bw_img)
titles = ['Original Image','BW Image']
for i in xrange(len(images)):
plt.subplot(1,2,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
Run Code Online (Sandbox Code Playgroud)
Tob*_*byD 114
OpenCV使用BGR作为图像的默认颜色顺序,matplotlib使用RGB.当您在matplotlib中显示加载了OpenCv的图像时,通道将返回到前面.
解决此问题的最简单方法是使用OpenCV将其显式转换回RGB,就像创建灰度图像时一样.
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
Run Code Online (Sandbox Code Playgroud)
然后在你的情节中使用它.
小智 16
简单的单线解决方案
np.flip(img, axis=-1)
Run Code Online (Sandbox Code Playgroud)
这可以双向转换。从RGB到BGR,再从BGR到RGB。
okk*_*okk 13
作为上一个答案的替代方法,您可以使用(速度稍快)
img = cv2.imread('lena_caption.png')[...,::-1]
%timeit [cv2.cvtColor(cv2.imread(f), cv2.COLOR_BGR2RGB) for f in files]
每个循环231毫秒±3.08毫秒(平均±标准偏差,共7次运行,每个循环1次)
%timeit [cv2.imread(f)[...,::-1] for f in files]
每个循环220 ms±1.81 ms(平均±标准偏差,共7次运行,每个循环1次)
归档时间: |
|
查看次数: |
38203 次 |
最近记录: |