核心函數:cv2.imread()
從文件中讀取(加載)圖像到一個 NumPy 數組 中。
該數組是 OpenCV 的圖像基本表示形式(即 cv2.Mat 在 Python 中對應 numpy.ndarray)。
函數定義
cv2.imread(filename, flags=cv2.IMREAD_COLOR)
參數詳解
|
參數名
|
類型
|
説明
|
|
|
|
圖像文件路徑,可以是絕對路徑或相對路徑
|
|
|
|
指定加載方式(見下表)
|
flags 參數選項(圖像加載模式)
|
模式常量
|
説明
|
|
|
以彩色模式加載圖像(默認值),忽略透明度通道(即讀取 BGR 三通道)。
|
|
|
以灰度模式加載圖像(單通道)。
|
|
|
保留圖像的原始通道,包括 alpha 通道(如 PNG 的透明度)。
|
|
|
如果圖像是 16 位或 32 位,則以相應的深度加載。
|
|
|
以任意顏色類型加載圖像。
|
|
|
以 1/2 尺寸讀取彩色圖像(加快讀取速度)。
|
|
|
以 1/4 尺寸讀取彩色圖像。
|
|
|
以 1/8 尺寸讀取彩色圖像。
|
|
|
以 1/2 尺寸讀取灰度圖像。
|
|
|
以 1/4 尺寸讀取灰度圖像。
|
|
|
以 1/8 尺寸讀取灰度圖像。
|
返回值
返回一個 numpy.ndarray:
- 彩色圖像 → 3 通道矩陣 (B, G, R)
- 灰度圖像 → 單通道矩陣
- 失敗時返回
None
示例
示例 1:加載彩色圖像(默認方式)
import cv2
# 讀取彩色圖像
img = cv2.imread("test.jpg", cv2.IMREAD_COLOR)
# 判斷是否讀取成功
if img is None:
print("無法加載圖像,請檢查路徑或文件名。")
else:
print("圖像加載成功,尺寸:", img.shape)
cv2.imshow("Color Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
示例 2:加載灰度圖像
import cv2
gray = cv2.imread("test.jpg", cv2.IMREAD_GRAYSCALE)
print("灰度圖像尺寸:", gray.shape)
cv2.imshow("Gray Image", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
注意:灰度圖像只有一個通道(shape 類似
(height, width))
示例 3:加載帶透明通道的圖像(如 PNG)
import cv2
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
print("圖像通道數:", img.shape[2] if len(img.shape) == 3 else 1)
cv2.imshow("With Alpha", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
若文件包含透明通道,則 shape 會是
(H, W, 4)(B, G, R, A)
示例 4:讀取圖像並縮小加載(節省內存)
import cv2
# 以 1/4 尺寸讀取
img_small = cv2.imread("test.jpg", cv2.IMREAD_REDUCED_COLOR_4)
cv2.imshow("Reduced Image", img_small)
cv2.waitKey(0)
cv2.destroyAllWindows()
在處理大圖片(例如 8K 或超大衞星圖)時,這種模式能顯著節省內存。
示例 5:錯誤處理(路徑錯誤)
import cv2
import os
path = "not_exist.jpg"
img = cv2.imread(path)
if img is None:
print(f"圖像 {path} 加載失敗,請檢查路徑或文件格式。")
else:
print("圖像加載成功。")
總結
|
功能
|
函數
|
示例
|
|
加載彩色圖像
|
|
彩色圖像(默認)
|
|
加載灰度圖像
|
|
灰度化處理
|
|
加載含透明通道
|
|
保留 alpha
|
|
縮放加載
|
|
加快速度
|
|
檢查加載失敗
|
|
檢測是否成功
|
|
中文路徑加載
|
|
支持中文路徑
|