Pythonを使用してOpenCVとONVIFを組み合わせることで、監視カメラの操作が可能になります。この記事では、その手順を詳しく説明します。
必要なモジュール
以下のPythonモジュールが必要です:
pip install rtsp
pip install pysimplegui
pip install --upgrade onvif_zeep
カメラ映像の受信
まず、RTSPライブストリームURLを使用してカメラ映像を受信します. 以下にそのコードの一部を示します:
import PySimpleGUI as sg
import rtsp
from PIL import Image, ImageTk
sg.theme('Dark Brown')
USER = "username" # <=自分の環境に合わせる
PASS = "password" # <=自分の環境に合わせる
IPADDR = "192.168.11.xx" # <=自分の環境に合わせる
PORT = "554"
STREAM = "stream2"
ONVIF_PORT = "2020"
# 以下省略
パンチルト対応
次に、パンチルト対応を行います. これにより、カメラの上下左右の回転やズームが可能になります.
class Cmd(Enum):
LEFT = 'left'
RIGHT = 'right'
UP = 'up'
DOWN = 'down'
IN = 'zoomin'
OUT = 'zoomout'
class Cam():
def __init__(self, host, user, password):
self.__url = "http://{}:{}@{}/web/cgi-bin/hi3510/".format(user, password, host)
self.__ptzctrl('stop')
def ptz(self, cmd, sec):
self.__ptzctrl(cmd.value)
sleep(sec)
self.__ptzctrl('stop')
def preset(self, num):
num = str(num - 1)
requests.get("{}/preset.cgi?-act=goto&-number={}".format(self.__url, num))
def __ptzctrl(self, cmdStr):
requests.get("{}/ptzctrl.cgi?-step=0&-act={}&-speed=63".format(self.__url, cmdStr))
以上の手順により、Pythonを使用してOpenCVとONVIFを組み合わせた監視カメラの操作が可能になります。さらに詳しい情報や完全なコードは、参考リンクをご覧ください。