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