[英]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.