如何使用OpenCV在Python中訪問IP攝像頭
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
在此文章中,我將解釋如何在Python中設置對IP攝像機流的訪問。
首先,必須找出網址流是什么。通過在構造函數中提供攝像機的網址流,可以在OpenCV中訪問IP攝像機cv2.VideoCapture??梢允褂媚承┚W絡掃描實用程序(例如在linux上的arp-scan)找到攝像機的IP地址。網址進一步的細節(jié),如Protocol,Credentials和Channel應該可以在相機說明書或軟件/手機應用程序中找到。我們通過在網絡上搜索相機的型號來找到相機的網址流。
通常,攝像機使用RTSP或HTTP協議來傳輸視頻。IP攝像機網址流的示例如下所示:rtsp://192.168.1.64/1
因此,可以通過以下代碼實現使用OpenCV從相機獲取快照:
capture = cv2.VideoCapture('rtsp://192.168.1.64/1')由于大多數IP攝像機都有用于訪問視頻的用戶名和密碼。在這種情況下,必須在網址流中提供憑據,如下所示:
capture = cv2.VideoCapture('rtsp://[username]:[password]@192.168.1.64/1')
這是整個腳本,可以實現通過OpenCV捕獲來自攝像機的視頻流:
import cv2#print("Before URL")cap = cv2.VideoCapture('rtsp://admin:[email protected]/H264?ch=1&subtype=0')#print("After URL")while True:#print('About to start the Read command')ret, frame = cap.read()#print('About to show frame of Video.')cv2.imshow("Capturing",frame)#print('Running..')if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()
我們需要啟動'While True'循環(huán)以顯示流。在循環(huán)中啟動它很重要,這樣可以中斷循環(huán)以按需釋放流。
'cv2.imshow'用于顯示視頻流。'cv2.imshow'帶有兩個參數。第一個是要顯示在窗口頂部的名稱。可以將其更改為所需的任何內容,但是最好擁有它。第二個是存儲捕獲視頻流的對象。在此示例中,它稱為“幀”。'cv2.destroyAllWindows()'。如果腳本中沒有該部分,則可能最終導致流在PC上引起大量延遲,直到強制關閉該流或該流因自然原因而死亡。交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~
評論
圖片
表情
