使用OpenCV擷取RTSP串流資料
本文使用的是Tapo C100 IP Camera,連接家用WiFi串流資料,由於官方文件有提供RTSP協議的串流網址格式(也可使用ONVIF),以及帳戶設定教學,因此採用RTSP協議進行實作。
取得RTSP串流的URL
參考官方教學文件,首先必須在以配對IP相機的Tapo app中,設定使用者名稱以及密碼。
(1) 從主頁進入攝影機實況頁面
(2) 在實況頁面上,點擊齒輪圖示進入攝影機設定頁面。
(3) 點擊“進階設定”,然後選擇“攝影機帳戶”來建立一個帳戶(使用者名稱和密碼)。
擷取影像
import cv2
import matplotlib.pyplot as plt
# Tapo攝影機的RTSP即時串流的URL(網址)
rtsp_url = 'rtsp://使用者名稱:密碼@IP位址:554/stream1'
# 開啟串流
cap = cv2.VideoCapture(rtsp_url)
# 從相機機擷取一張影像
ret, frame = cap.read()
# 將BGR圖片轉為RGB
img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 顯示圖片
plt.imshow(img)
# 釋放相機資源
cap.release()
得到如下影像,影像尺寸為 1920 x 1080,檔案大小162KB。
後記
從目前的檔案大小來看,若要做到FPS=1的即時偵測,一天共會產生 86400 * 162 KB = 13.35 GB 的圖檔。然而在監視畫面中,大部分都是靜止不動的重複影格,因此在收集訓練資料前,必須先辨識靜止不動的情況。