【问题标题】:The shapes of image read from CV2 and Pillow are different从 CV2 和 Pillow 读取的图像形状不同
【发布时间】:2021-04-14 09:44:24
【问题描述】:

我有一个从 cv2.imread 读取的图像,形状是 (2320, 1744, 3)。但是,当我使用 Pillow 时,结果却大不相同:

a = PIL.Image.open('mypic')
a.size # => (2320, 1744)
b = np.asarray(a)
b.shape # => (1744, 2320, 3)

为什么会自动转置?

【问题讨论】:

标签: python opencv python-imaging-library


【解决方案1】:

感谢 HansHirse,这篇文章对我帮助很大。但是枕头仍然很奇怪。

从 cv2 读取的两个不同图像的形状相同,而从 Pillow 读取的形状不同,如下所示。

import cv2
a = cv2.imread("0.jpg")
a.shape # (2320, 1744, 3)
b = cv2.imread("1.jpg")
b.shape # (2320, 1744, 3)
c = Image.open("0.jpg")
print(c.mode, c.size, c.format)
# RGB (2320, 1744) JPEG

d = Image.open("1.jpg")
print(d.mode, d.size, d.format)
# RGB (1744, 2320) JPEG

【讨论】:

  • 这些照片可能是用手机相机或类似设备拍摄的吗?有时,会考虑方向,图像会自动旋转。也许,只需在您的实际问题中提供有问题的图像。
  • 是的,两张图是用手机拍的。我做了一些错误,因为我找不到任何关于 PIL 如何读取图像的文档。
猜你喜欢
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
相关资源
最近更新 更多