影像處理常從讀取一張圖或一段影片開始。這篇把 OpenCV 的讀取、視窗顯示、按鍵等待與圖片儲存分開整理,方便實作時快速找到對應指令。
- 讀取圖片與影片來源
- 建立顯示視窗並處理按鍵等待
- 儲存圖片、調整視窗與釋放畫面
原始實作記錄於 2020 年;以下操作畫面與程式範例保留當時版本。
下面依讀取、顯示、儲存與關閉的順序整理常用指令。先用一張確定存在的圖片練習,再把相同流程延伸到影片或相機。
讀取圖片檔案
以檔案路徑讀取圖片,將結果保存到變數中。路徑錯誤或檔案無法解碼時,Python 的 imread 可能回傳 None,應先確認讀取成功再顯示。
1 | img = cv2.imread("test.jpg") # img = test.jpg |
讀取影片檔案
建立影片來源後,以 read 逐幀取得畫面,並檢查回傳的成功旗標。旗標為 False 時,可能已到影片結尾,也可能讀取失敗。
1 | vc=cv2.VideoCapture("output.mp4") #vc = output.mp4 |
等待任何按鍵
waitKey(0) 會持續等待按鍵;使用正整數時則等待指定的毫秒數。它同時讓 OpenCV 視窗處理事件,顯示圖片或影片時應配合呼叫。
1 | cv2.waitKey(0) |
顯示視窗
指定視窗名稱並顯示影像。OpenCV 預設讀取的彩色影像使用 BGR 通道順序;交給其他使用 RGB 的工具前,需確認通道是否需要轉換。
1 | cv2.imshow("test",img) # ("視窗名稱",要顯示的圖片或影片) |
關閉顯示視窗
關閉單一視窗應使用 cv2.destroyWindow("test");關閉全部視窗則使用不帶參數的 cv2.destroyAllWindows()。以下保留原始範例。
1 | cv2.destroyAllWindows("test") # 關閉指定的"test"視窗 |
自由調整視窗大小
先建立可調整大小的視窗,再顯示影像。
1 | cv2.namedWindow('test', cv2.WINDOW_NORMAL) # 讓視窗可以自由縮放大小 |
寫入圖片檔案
依輸出副檔名選擇格式,並視需要設定品質或壓縮層級。寫入後檢查回傳值與輸出檔案,不要只因為程式沒有報錯就認定圖片已保存。
1 | # 寫入圖檔 |
把指令串成一個流程
先讀取並檢查影像,再顯示與處理按鍵,最後視需要儲存結果並關閉視窗。影片與相機另需釋放 VideoCapture;關閉視窗和釋放影像來源是兩個不同的動作。
參考:OpenCV 官方影像入門。

