我正在尝试拍摄一个RGB图像,将其转换为L a b(也称为CIE L*a*b*)颜色空间,并提取L*分量。
这是我的代码:
from skimage import io, color
from scipy import misc
import matplotlib.pyplot as plt
import cv2
img = misc.imread("/Users/zheyuanlin/Desktop/opencv_tests/parrots.png", mode='RGB')
img_resized = misc.imresize(img, (256, 256), 'bilinear') # resized to 256x256
img_cielab = color.rgb2lab(img_resized, illuminant='D50')
# Rescale due to range of LAB values being L (0-100), a (-128-127), b (-128-127)
cielab_scaled = (img_cielab + [0, 128, 128]) / [100, 255, 255]
cie_l, cie_a, cie_b = cv2.split(cielab_scaled)
""" Display the image """
plt.imshow(cie_l)
plt.show()
这是生成的图像:
下面是我在google上找到的一篇研究论文中同一图像的L*组件的示例:
我不知道为什么我的代码看起来这么绿,有人知道我的代码有问题吗?谢谢!
最佳答案
您显示的图像与纸张上的图像相同。但是pyplot有一个默认的颜色映射,它将蓝色、绿色和黄色添加到灰度图像中。
要更改使用的颜色贴图,请使用the set_cmap
function:
plt.set_cmap('gray')
关于python - 从RGB转换为LAB后,从图像中提取L *分量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50688365/