使用cv2.imread(OpenCV)和PIL.Image.open(Pillow)将图像打开为numpy数组时的不同结果

问题描述 投票:0回答:2

我试图打开一个图像并将其变成一个numpy数组。

我试过:1)cv2.imread直接给你一个numpy数组2)和PIL.Image.open然后做一个numpy.asarray来转换图像对象。

然后我意识到从同一张图片得到的数组是不同的,请参阅附加的截图。 cv2.imread PIL.Image.open

我希望颜色通道应始终具有相同的顺序,无论包装,但我似乎无法找到任何枕头重复这个文件。

或者我只是愚蠢?提前感谢任何建议!

opencv pillow
2个回答
2
投票

我对PIL一无所知,但与世界上其他所有系统相反,OpenCV以BGR顺序存储图像,而不是RGB。这让每个OpenCV初学者都感到惊讶,看起来就像你的例子一样。


0
投票

OpenCV的

image = cv2.imread(image_path, 1)
image_cv = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

枕头

image = Image.open(image_path).convert("RGB")
image_pillow = numpy.array(image_from_pil)

image_np等于image_cv

注意,在读取JPEG图像时,image_np和image_cv可能差别不大,因为libjpeg verison mat在OpenCV和Pillow中有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.