web-dev-qa-db-ja.com

Python OpenCVでIPカメラにアクセス

IPカメラストリームにアクセスするにはどうすればよいですか?

標準のWebカメラストリームを表示するためのコードは

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):

    ret, frame = cap.read()
    cv2.imshow('frame',frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

IPカメラを使用してまったく同じことを行うにはどうすればよいですか?

私のシステム:

  • Python 2.7.14
  • OpenCV 2.4.9
  • Teledyne Dalsa Genie Nano XLカメラ

ヘルプは高く評価されます

したがって、Python OpenCVでIPカメラにアクセスするための最も包括的な全体的な手順と思われるものを報告する自分の質問に答えます。

IPカメラの場合:

  • カメラIPアドレスを見つけます
  • IPアドレスにアクセスするportを見つけます
  • カメラプロバイダーによって指定されたprotocol(HTTP/RTSPなど)を見つける

次に、カメラが保護されている場合、次のことを確認します。

  • あなたのusername
  • あなたのpassword

次に、データを使用して次のスクリプトを実行します。

"""Access IP Camera in Python OpenCV"""

import cv2

stream = cv2.VideoCapture('protocol://IP:port/1')

# Use the next line if your camera has a username and password
# stream = cv2.VideoCapture('protocol://username:password@IP:port/1')  

while True:

    r, f = stream.read()
    cv2.imshow('IP Camera stream',f)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()

NOTE:私の元の質問では、Teledyne Dalsa Genie Nano XL Cameraで作業することを指定しています。残念ながら、この種のカメラでは、この通常のIPカメラビデオストリームへのアクセス方法は機能せず、Sapera SDKを使用してフレームを取得する必要がありますデバイス。

cv2.VideoCaptureのコンストラクターでカメラのストリーミングURLを提供することにより、opencvでIPカメラにアクセスできます。

通常、カメラはビデオをストリーミングするためにRTSPまたはHTTPプロトコルを使用します。 IPカメラストリーミングURLの例は次のとおりです。

rtsp://192.168.1.64/1

次のようにOpenCVで開くことができます。

capture = cv2.VideoCapture('rtsp://192.168.1.64/1')

ほとんどのIPカメラには、ビデオにアクセスするためのユーザー名とパスワードがあります。このような場合、次のように資格情報をストリーミングURLで提供する必要があります。

capture = cv2.VideoCapture('rtsp://username:[email protected]/1')
11
sgarizvi

まず、RTSP/HTTPなどであるかどうかなど、IPカメラのストリーミングURLを見つけます。

コードの変更は次のとおりです。

cap = cv2.VideoCapture("ipcam_streaming_url")

例えば:

cap = cv2.VideoCapture("http://192.168.18.37:8090/test.mjpeg")
6
Venkatesh

IPカメラ経由でビデオをストリーミングする最も簡単な方法!

あなたの例を編集します。 IPを置き換えて、リンクに/videoを追加する必要があります。そしてプロジェクトを進めてください

import cv2

cap = cv2.VideoCapture('http://192.168.18.37:8090/video')

while(True):
    ret, frame = cap.read()
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break
5
ToanJunifer

これは私のIPカメラで動作します:

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'):
        break

cap.release()
cv2.destroyAllWindows()

カメラのセットアップ画面でストリームURLを見つけました: IP Camera Setup Screen

カメラのユーザー名(admin)とパスワード(123456)を追加し、URLのIPアドレス(admin:123456 @)の前に@記号を付けて終了したことに注意してください。

3
John Harris

IPカメラのビデオリンクを取得するには:

  1. ブラウザでIPおよびPORTを指定してIPカメラを開きます
  2. ビデオを右クリックし、「画像アドレスをコピー」を選択します
  3. そのアドレスを使用してビデオをキャプチャします
2
Garry

IPカメラにアクセスするには、まず、通常のソフトウェアを使用して、コードなしで標準アプリケーションに使用するようにインストールすることをお勧めします。

この後、カメラごとに異なるコードがあることを知っておく必要があります。それらにアクセスするために使用できるコードを確認できるWebサイトがあります。

https://www.ispyconnect.com/sources.aspx

しかし、私のカメラ(Intelbras S3020)では機能しないので注意してください。正しい方法は、あなたのカメラの会社に尋ねることであり、彼らが良い会社であれば彼らはそれを提供します。

コードがわかったら、次のように追加します。

cap = cv2.VideoCapture("http://LOGIN:PASSWORD@IP/cgi-bin/mjpg/video.cgi?&subtype=1")

代わりにログインしてログイン名を入力し、代わりにパスワードを入力してパスワードを入力します。

カメラのIPアドレスを調べるには、ダウンロードしてIPアドレスを提供できるソフトウェアが多数あります。 Intelbrasのソフトウェアを使用していますが、購入したほぼすべてのカメラで動作するEseeCloudもお勧めします。

https://eseecloud.software.informer.com/1.2/

この例では、IPカメラにアクセスするためのプロトコルhttpを示していますが、rstpを使用することもできます。これは、先ほど述べたように、カメラによって異なります。

さらに質問がある場合はお知らせください。

2

以下のようにほとんどのIPカメラにアクセスできます

import cv2 

path = "http://username:password@your_ip:your_port/tmpfs/auto.jpg"

while True:

     cap = cv2.VideoCapture(path)

     ret, frame = cap.read()
     if not ret:
         break

     cv2.imshow('frame', frame)

     key = cv2.waitKey(1) & 0xFF

     if key == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

しかし、画像にアクセスしているため、この方法がうまく機能するかどうかはわかりません。

1
Dinusha Dilanka

pycharmでは、IPカメラにアクセスするためのコードを次のように書きました。

import cv2

cap=VideoCapture("rtsp://user_name:password@IP_address:port_number")

ret, frame=cap.read()

user_namepasswordIP、およびportを適切な値に置き換える必要があります

1
Soma Banerjee