Отримання інформації про розпізнаний номерний знак з ANPR камер HIKVISION 7 серії через використання ISAPI

Oct 11, 2024
0
34

Підписка на подію

Для того, щоб отримати подію розпізнавання номеру автомобіля камерою (серії камер 7A26 та 4А26), необхідно підняти сервер, здатний обробляти запити.

Після цього необхідно відіслати відповідну команду (/ISAPI/Event/notification/httpServers/) на камеру, аби камера знала, куди відсилати подію (також є можливість зберігати зображення з номером).

Приклад:

ip камери: 192.168.30.173,

ip сервера: 192.168.30.139,

port сервера: 5008,

повний url : http://192.168.30.139:5008/http_alarm.

Команда для камери:  http://192.168.30.173/ISAPI/Event/notification/httpServers/

метод – PUT, digest auth (login, password)

ulr - http://192.168.30.173/ISAPI/Event/notification/httpServers/

========

<HttpServer version="2.0"

  xmlns="http://www.hikvision.com/ver20/XMLSchema">

  <id>1</id>

  <url>http://192.168.30.139:5008/http_alarm</url>

  <enabled>true</enabled>

  <protocolType>HTTP</protocolType>

  <parameterFormatType>XML</parameterFormatType>

  <addressingFormatType>ipaddress</addressingFormatType>

  <ipAddress>192.168.30.139</ipAddress>

  <portNo>5008</portNo>

  <userName></userName>

  <httpAuthenticationMethod>none</httpAuthenticationMethod>

  <eventType>all</eventType>

  <uploadPicture>false</uploadPicture>

  <pictureType>big</pictureType>

</HttpServer>

Для отримання налаштувань камери можна використати ту саму команду, але змінити метод на GET (щоб видалити - DELETE) .

GET http://192.168.30.173/ISAPI/Event/notification/httpServers/

DELETE http://192.168.30.173/ISAPI/Event/notification/httpServers/<:id>

Отримання інформації про номер та фото

Після цього, на вказаний url (http://192.168.30.139:5008/http_alarm) будуть приходити події формату: [('channelID', '1'), ('dateTime', '20191228T121448 0200'), ('eventType', 'vehicleDetection'), ('country', 'Ukraine'), ('licensePlate', 'AA7367EA'), ('lane', '1'), ('direction', 'forward'), ('confidenceLevel', '100')].

dateTime = request.args.get('dateTime')

plate_number = request.args.get('licensePlate')

А також зображення (request.data).

with open('{}\\{}.jpg'.format(path, id), 'wb') as handler:

handler.write(request.data)

Picture1.png

Відправити POST команду на камеру з відповідним пейлоадом.

Команда: http://192.168.30.176/ISAPI/ContentMgmt/search

Digest Auth: login, password

Пейлоад:

<CMSearchDescription>

                <searchID>1</searchID>

                <trackIDList>

                               <trackID>103</trackID>

                </trackIDList>

                <timeSpanList>

                               <timeSpan>

                                               <startTime>2022-10-24T21:00:00Z</startTime>

                                               <endTime>2022-10-25T20:59:59Z</endTime>

                               </timeSpan>

                </timeSpanList>

                <maxResults>50</maxResults>

</CMSearchDescription>

Приклад відповіді:

<?xml version="1.0" encoding="UTF-8"?>

<CMSearchResult version="2.0"

                xmlns="http://www.hikvision.com/ver20/XMLSchema">

                <searchID>{1}</searchID>

                <responseStatus>true</responseStatus>

                <responseStatusStrg>MORE</responseStatusStrg>

                <numOfMatches>1</numOfMatches>

                <matchList>

                               <searchMatchItem>

                                               <sourceID>{0000000000-0000-0000-0000-000000000000}</sourceID>

                                               <trackID>103</trackID>

                                               <timeSpan>

                                                               <startTime>2022-10-25T11:26:30Z</startTime>

                                                               <endTime>2022-10-25T11:26:30Z</endTime>

                                               </timeSpan>

                                               <mediaSegmentDescriptor>

                                                               <contentType>picture</contentType>

                                                               <codecType>jpeg</codecType>

                                                               <playbackURI>http://192.168.30.176/ISAPI/Streaming/tracks/103/?starttime=20221025T112630Z&amp;endtime=20221025T112630Z&amp;name=ch01_00000000000000034@20221025132630_AB9999AC&amp;size=195434</playbackURI>

                                               </mediaSegmentDescriptor>

                                               <metadataMatches>

                                                               <metadataDescriptor>recordType.meta.hikvision.com/vehicleDetection</metadataDescriptor>

                                               </metadataMatches>

                               </searchMatchItem>

                </matchList>

</CMSearchResult>

Де, спарсивши, значення playbackURI ви можете завантажити зображення GET запитом (http://192.168.30.176/ISAPI/Streaming/tracks/103/?starttime=20221025T112630Z&amp;endtime=20221025T112630Z&amp;name=ch01_00000000000000034@20221025132630_AB9999AC) і отримати номер автомобіля (AB9999AC).

Picture2.png

Керування тривожним виходом

Відправити PUT команду на камеру з відповідним пейлоадом (щоб увімкнути тригер):

url='http://{}:{}/ISAPI/System/IO/outputs/1/trigger'.format('192.168.30.173', 80)

payloadToOn = """

        <IOPortData>

            <outputState>high</outputState>

        </IOPortData>

"""

r = requests.put(url, auth=HTTPDigestAuth('login', 'password'), data=payloadToOn, timeout=5)

Потім, щоб вимкнути тригер:

payloadToOff = """

        <IOPortData>

            <outputState>low</outputState>

        </IOPortData>

        """

r = requests.put(url, auth=HTTPDigestAuth('login', 'password'), data=payloadToOff, timeout=5)

Завантажуйте прикріплений файл з повною інструкцією.

Оцініть цю статтю

Будь ласка, увійдіть, щоб оцінити статтю.

Коментарі

Будь ласка, увійдіть, щоб залишати коментарі.

Коментарів ще немає.