簡體   English   中英

從 CV2 和 Pillow 讀取的圖像形狀不同

[英]The shapes of image read from CV2 and Pillow are different

我有一個從 cv2.imread 讀取的圖像,形狀是 (2320, 1744, 3)。 但是,當我使用 Pillow 時,結果卻大不相同:

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

為什么會自動換位?

感謝 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 以 cols、row、channel 的順序讀取帶有軸的圖像,或者更容易說為 x,y,channel。 其他圖像讀取包(即 cv2)按行、列、通道(或 y、x、通道)的順序獲取軸。 這種方法對人們來說更為熟悉,尤其是在處理衛星或航空圖像時。 您可以使用 PIL 或 cv2 閱讀,只需注意軸位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM