Python | OpenCV 圖片讀取與顯示
📚 前言
在前一篇我們理解了「圖片在電腦中就是矩陣」。
這一篇要進入 影像基本操作:如何用 OpenCV 讀取圖片、顯示圖片,以及注意事項。
🖼️ 讀取圖片
使用 imread() 方法,可以開啟圖片。官方文件imread() 有兩個參數:
- 第一個參數:檔案的路徑和名稱。
- 第二個參數:可不填,表示以何種模式 (mode) 開啟圖片。
常見的模式有:
cv2.IMREAD_COLOR(預設,彩色讀取,忽略透明度)cv2.IMREAD_GRAYSCALE(灰階讀取)cv2.IMREAD_UNCHANGED(保留原始影像,包含透明度)
👉 開啟的圖片支援常見的 jpg、png、bmp… 等格式。
下面是最基本開啟圖片的程式碼:
1 | import cv2 |
輸出結果可能是:
1 | 影像型態: <class 'numpy.ndarray'> |
👉 可以看到,圖片就是 NumPy 的陣列。

圖:讀取圖片後輸出影像型態與大小資訊
imread 的第二個參數 (flags)
第二個參數,能使用不同的模式開啟圖片。官方文件
cv2.imread(filename, flags)
- filename:檔案路徑與名稱。
- flags:讀取模式,決定如何載入圖片。
| 參數 | 數值 | 說明 |
|---|---|---|
cv2.IMREAD_COLOR |
1 | 預設模式,讀取彩色影像,忽略透明度 |
cv2.IMREAD_GRAYSCALE |
0 | 讀取為灰階影像 |
cv2.IMREAD_UNCHANGED |
-1 | 保留原始影像(包含 alpha 通道) |
cv2.IMREAD_ANYDEPTH |
2 | 依據影像深度讀取(16/32 位元) |
cv2.IMREAD_ANYCOLOR |
4 | 嘗試以任何顏色格式讀取 |
cv2.IMREAD_REDUCED_COLOR_2 |
17 | 彩色影像縮小為原始大小的 1/2 |
cv2.IMREAD_REDUCED_COLOR_4 |
33 | 彩色影像縮小為原始大小的 1/4 |
cv2.IMREAD_REDUCED_COLOR_8 |
65 | 彩色影像縮小為原始大小的 1/8 |
cv2.IMREAD_REDUCED_GRAYSCALE_2 |
7 | 灰階影像縮小為原始大小的 1/2 |
cv2.IMREAD_REDUCED_GRAYSCALE_4 |
23 | 灰階影像縮小為原始大小的 1/4 |
cv2.IMREAD_REDUCED_GRAYSCALE_8 |
39 | 灰階影像縮小為原始大小的 1/8 |
範例:
1 | import cv2 |

圖:不同模式讀取圖片後的矩陣大小差異
👀 顯示圖片
使用 cv2.imshow() 可以顯示圖片。官方文件
這個方法有 兩個參數:
- 第一個參數:視窗標題 (string),會顯示在視窗上方。
- 第二個參數:要顯示的影像 (NumPy 陣列)。
範例:
1 | cv2.imshow("My Image", img) |
waitKey 的作用
cv2.waitKey() 用來設定 等待時間 (毫秒),並監聽鍵盤事件:官方文件
cv2.waitKey(0)→ 無限等待,直到按下任意鍵。cv2.waitKey(2000)→ 等待 2000 毫秒 (2 秒),自動關閉視窗。- 如果在等待期間按下某個鍵,會回傳該鍵的 ASCII 值,可用來做互動控制。
關閉視窗

圖:使用 imshow 顯示圖片並等待按鍵
🛠️ 範例程式:讀取與顯示
1 | import cv2 |

圖:讀取彩色圖片並顯示
🛠️ 範例程式:讀取灰階模式與顯示
1 | import cv2 |

圖:讀取灰階圖片並顯示
⚠️ 注意事項
- 路徑問題:
cv2.imread()需要正確的檔案路徑,否則會回傳None。 - 顏色通道:OpenCV 預設是 BGR,不是 RGB。
- 顯示環境:在 Jupyter Notebook 中,
cv2.imshow()可能無法使用,可以改用matplotlib:
1 | import matplotlib.pyplot as plt |

結語 🎯
這一篇我們完成了圖片的 讀取與顯示,並理解了 OpenCV 的基本操作。
下一篇將進一步學習 影像儲存與格式轉換,儲存影像並進行格式轉換,掌握影像處理的基礎技巧。
