Like Share Discussion Bookmark Smile

J.J. Huang   2026-02-11   Python OpenCV 06.視訊與互動篇   瀏覽次數:次   DMCA.com Protection Status

Python | OpenCV 攝影機即時圖片讀取

📚 前言

在前一篇我們學會了 影像金字塔與多尺度分析
這一篇要介紹如何使用 OpenCV 即時讀取攝影機圖片
這是電腦視覺的基礎操作之一,常用於人臉偵測、物件追蹤、即時監控等應用。
即使沒有攝影機,也可以用影片檔或網路串流來模擬。

🔎 原理說明

  • 即時讀取:透過 cv2.VideoCapture() 連接來源,持續讀取影格 (frame)。
  • 流程
    1. 建立來源物件 (攝影機 / 影片檔 / 網路串流)。
    2. 迴圈讀取影格。
    3. 顯示影格。
    4. 按下指定按鍵結束程式。

🧠 函式與參數說明

📌 cv2.VideoCapture()

用途:建立攝影機物件,讀取即時影像。

1
cap = cv2.VideoCapture(0)
  • 0:代表預設攝影機。
  • 1, 2…:代表其他攝影機。
  • cap:攝影機物件。

📌 cap.read()

用途:讀取一個影格。

1
ret, frame = cap.read()
  • ret:是否成功讀取 (True/False)。
  • frame:讀取到的影像。

📌 cv2.imshow()

用途:顯示影像。

1
cv2.imshow("Camera", frame)
  • “Camera”:視窗名稱。
  • frame:要顯示的影像。

💻 範例程式 — 即時讀取攝影機影像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import cv2

# 建立攝影機物件 (0 = 預設攝影機)
cap = cv2.VideoCapture(0)

while True:
# 讀取影格
ret, frame = cap.read()
if not ret:
print("無法讀取影像")
break

# 顯示影像
cv2.imshow("Camera", frame)

# 按下 q 鍵退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break

# 釋放攝影機資源
cap.release()
cv2.destroyAllWindows()


圖:即時讀取攝影機影像並顯示

註:由於本身沒有攝影鏡頭,所以無法示範效果。

💻 範例程式 — 讀取影片檔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import cv2

# 讀取影片檔
cap = cv2.VideoCapture("video.mp4")

while True:
ret, frame = cap.read()
if not ret:
print("影片結束或無法讀取")
break

cv2.imshow("Video", frame)

# 按下 q 鍵退出
if cv2.waitKey(30) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()


圖:從影片檔逐格讀取並顯示

💻 範例程式 — 讀取交通監視器 MJPEG 串流

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import cv2

# MJPEG 串流 URL (交通監視器)
url = "https://cctvn.freeway.gov.tw/abs2mjpg/bmjpg?camera=73270"

cap = cv2.VideoCapture(url)

while True:
ret, frame = cap.read()
if not ret:
print("無法讀取串流")
break

cv2.imshow("Traffic Camera", frame)

# 按下 q 鍵退出
if cv2.waitKey(30) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()


圖:即時讀取交通監視器的 MJPEG 串流

⚠️ 注意事項

  • 攝影機編號可能不同,0 是預設,若有多個攝影機可嘗試 12
  • cv2.VideoCapture() 可讀取 攝影機、影片檔、網路串流
  • MJPEG 串流需要網路連線,若 URL 無效或網路不通,會無法讀取。
  • 即時圖片處理需要效能,建議在迴圈中避免過度複雜的運算。

📊 應用場景

  • 人臉偵測:即時讀取並進行人臉辨識。
  • 物件追蹤:即時追蹤移動物體。
  • 監控系統:即時顯示並儲存圖片。
  • 交通監控:讀取交通監視器串流,分析即時路況。
  • 互動應用:即時影像結合 AR/VR。

🎯 結語

本篇我們學會了如何使用 OpenCV 即時讀取攝影機影像,並且能顯示影格。
即使沒有攝影機,也能用影片檔或網路串流來模擬。
這是電腦視覺的基礎操作,後續可以結合人臉偵測、物件追蹤等功能,打造更完整的應用。

📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。

註:以上參考了
OpenCV Tutorials
OpenCV-Python Tutorials
1968-高速公路資訊網