PIL和cv2中像素信息不同

3

我已经使用PILcv2加载了同一张图片,但是相同索引的像素信息却不同。这是我的代码:

import cv2
from PIL import Image

img = cv2.imread('Fruits1.jpg') # Can be many different formats.
print(img[100, 200])

img = Image.open('Fruits1.jpg')
pixel_img = img.load()
print(pixel_img[100, 200])

输出:

[191 212 209]
(255, 255, 255)

RGB通道的数量在这两种情况下不应该是相同的吗? 这是我使用的图像。

如果您分享您的图像,可能更容易提供建议。 - Mark Setchell
我已经添加了带有问题的图片。@MarkSetchell - Preetom Saha Arko
1个回答

8

OpenCV返回一个numpy数组。因此,您的索引是[row_idx, col_idx]或[y, x],而PIL像素访问则完全相反,使用[x, y]坐标。

将PIL访问翻转为[200, 100],即可看到相同的像素。

注意,还会有另一个混淆:PIL按RGB顺序读取通道,但OpenCV按BGR顺序读取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接