首頁 >後端開發 >Python教學 >如何使用 Python 從 IP 攝影機擷取即時視訊串流

如何使用 Python 從 IP 攝影機擷取即時視訊串流

DDD
DDD原創
2025-01-16 20:15:10968瀏覽

本 Python 教學示範了從 IP 攝影機擷取和顯示即時視訊來源。我們將利用 requestsOpenCVimutils 來取得、處理和顯示影像。 該腳本不斷檢索並顯示視訊串流,直到用戶退出。

目標:

本教學展示如何:

  • 透過 HTTP 從 IP 攝影機擷取視訊影格。
  • 使用OpenCV處理和顯示幀。
  • 持續捕捉並即時顯示影像。
  • 實現一個循環來顯示流,按下按鍵時退出。

最終輸出是即時視訊串流,可以按 Esc 鍵終止。

先決條件:

安裝這些函式庫:

<code class="language-bash">pip3 install requests opencv-python imutils</code>

您還需要一個 IP 攝影機或透過 HTTP 傳輸視訊串流的裝置(例如,在連接埠 8080 上使用 MJPEG 的網路攝影機)。

使用 IP 網路攝影機應用程式(行動裝置):

  1. 在您的手機上安裝 IP 網路攝影機應用程式。
  2. 將您的電腦和手機連接到同一網路。
  3. 啟動 IP 網路攝影機應用程式的伺服器。 將顯示 URL(例如 http://192.168.0.101:8080/video)。在 Python 腳本中使用此 URL。 在應用程式的視訊渲染器下選擇“Javascript”。
  4. 透過在瀏覽器中開啟 URL 來驗證相機來源是否正常運作。

How to Capture Live Video Stream from an IP Camera Using Python

Python 代碼:

<code class="language-python">import requests
import cv2
import numpy as np
import imutils

# Replace with your IP camera URL.  Ensure "/shot.jpg" is appended.
url = "http://192.168.0.101:8080/shot.jpg"  # Example URL

while True:
    img_resp = requests.get(url)
    img_arr = np.array(bytearray(img_resp.content), dtype=np.uint8)
    img = cv2.imdecode(img_arr, -1)
    img = imutils.resize(img, width=1000, height=1800) #Optional Resizing
    cv2.imshow("IP Camera Feed", img)
    if cv2.waitKey(1) == 27: # Esc key to exit
        break

cv2.destroyAllWindows()</code>

逐步說明:

  1. 導入函式庫:匯入 HTTP 請求、映像處理、陣列處理和 OpenCV 實用函數所需的函式庫。

  2. 攝影機 URL: 設定網路攝影機串流的 URL。 將佔位符 IP 位址替換為您相機的 IP 位址。

  3. 影像檢索: while 循環不斷從 URL 取得影像。

  4. 解碼和調整大小:原始影像資料轉換為 NumPy 數組,使用 OpenCV 進行解碼,並可選擇調整大小以獲得更好的顯示效果。

  5. 顯示:影像顯示在標題為「IP 攝影機來源」的視窗中。

  6. 退出條件: cv2.waitKey(1)等待按鍵。按 Esc (27) 會中斷循環。

  7. 清理: cv2.destroyAllWindows() 關閉所有 OpenCV 視窗。

執行腳本:

  1. 啟動您的網路攝影機。
  2. 使用相機的正確 URL 更新 url 變數。
  3. 儲存腳本(例如,ipcam_viewer.py)。
  4. 運行:python ipcam_viewer.py

視訊串流應該會出現。 按 Esc 關閉。

結論:

該腳本提供了用於查看 IP 攝影機來源的基本框架。 它可以擴展到包括運動偵測或錄影等功能。請記得將佔位符 URL 替換為您相機的實際串流位址。

以上是如何使用 Python 從 IP 攝影機擷取即時視訊串流的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn