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

Picture of Менеджер Viatec

Менеджер Viatec

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

Для того, щоб отримати подію розпізнавання номеру автомобіля камерою (серії камер 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)

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

Нещодавно переглянуті статті