##ネットワークカメラの画像を処理したい
USBカメラの画像をOpenCVで処理するサンプルはよく見かけますが、ネットワーク・カメラを使用した場合にどのようにコードを記述して良いのかわからなかったので試してみました。
##デバイス指定時にrtspのURLを指定するだけでOK!
結論から言うと、以下のようにキャプチャする際にrtspのURLを指定すればOKです。
使用するカメラによって、rtspのパスは異なりますが、今回使用したIODataのNS210では、ipcam_h264.sdpというパスが指定されていました。(設定画面から自由に変更することが可能です。)
rtsp://user:password@ip:port/ipcam_h264.sdp
##コード例
実際のコードのサンプルを以下に示します。
USBカメラと同様のコードで表示が可能です。
なお、USB接続と比べると多少のラグがありますので、ネットワークカメラ側でrtspで送信する動画の解像度やビットレートを調整しましょう。
camera.py
import cv2
# rtspのURL指定でキャプチャするだけ
capture = cv2.VideoCapture('rtsp://admin:password@192.168.0.1:47614/ipcam_h264.sdp')
while(True):
ret, frame = capture.read()
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
capture.release()
cv2.destroyAllWindows()