簡體   English   中英

CV2 和 Pillow 給出不同的圖像形狀

[英]CV2 and Pillow give different image shape

我有一個正在加載到 python 中的黑白圖像。 如果我使用枕頭或 cv2 我會得到兩個不同的答案,用於創建的 NumPy 數組的維度。 我知道通道排序(RGB 與 BGR)與 openCV 和枕頭不同,但我不認為這就是這里發生的事情

是我的圖像 2 維作為枕頭代表它。 這是否意味着 openCV 將值復制到 3D 數組中?

import cv2
from PIL import Image
import numpy as np

path = 'path/to/file.png'

#using pillow
img = Image.open(path)
img.size #(500,500)
img.mode # L
arr = np.array(img)
arr.shape #(500,500)

#using cv2
image = cv2.imread(path)
image.shape #(500,500,3)

如果我在 bash 終端中運行file

$ file 'path/to/image.png'
path/to/image: PNG image data, 500 x 500, 8-bit grayscale, non-interlaced

cv2.imread函數有兩個參數:文件名和標志。 默認情況下,該標志設置為cv2.IMREAD_COLOR (或 1)。 另一方面,PIL 會以灰度模式“L”自動加載您的圖像。 如果您希望 cv2 圖像以相同的方式工作,請執行以下操作:

image = cv2.imread(path, cv2.IMREAD_GRAYSCALE)

或者

image = cv2.imread(path, 0)

您還可以將灰度 PIL 圖像轉換為 3 個通道:

img = Image.open(path).convert('RGB')

暫無
暫無

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

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