Mat*_*ith 5 python numpy image colors python-imaging-library
将图像加载到Python中,如下所示,我如何知道通道的顺序?(例如BGR或RGB)
码
from PIL import Image
import numpy as np
image_pil = Image.open("Stonehenge.jpg")
image_np = np.array(image_pil)
image_np[0][0]
Run Code Online (Sandbox Code Playgroud)
结果
array([ 52, 123, 155], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)
具体问题
我如何知道52红色通道,蓝色通道还是其他通道?或者这个问题在概念层面上没有意义吗?
在一个类似的Java而不是Python的问题中,一个人声称:
如果您正在读取图像文件,或者您可以访问读入该文件的代码,请知道它是:
- BGR命令,如果你使用cv2.imread(),
- RGB命令,如果你使用mpimg.imread(),(假设导入matplotlib.image为mpimg)
如果您不知道文件是如何打开的,则接受的答案BufferedImage非常适合Java.
由于您使用PIL并且未指定任何其他模式来加载Image,因此您将获得RG B.
您可以通过检查Image实例上的"mode"属性来验证:
image_pil.mode # should return the string 'RGB'
Run Code Online (Sandbox Code Playgroud)
Pillow通过image_pil.__array_interface__魔术方法支持数组接口,所以当你创建ndarray numpy时就是使用它.也就是说,它对颜色通道顺序一无所知.如果你有一个存储为BGR的图像文件,并且像这样加载它,你将在红色通道中获得蓝色数据,反之亦然,当你显示它时看起来会出错.