License plate verifier API
Description
The AXIS License plate verifier API contains the information and steps that makes it possible to detect and recognize license plates and whether the vehicle should be allowed to enter a restricted area such as a parking garage. It is split into three groups that handles everything from settings to how to query events and retrieve real time data from the system:
Real time events API
Description
Real time recognition events can be received from a camera using VAPIX protocols in a format where all recognition related data except images are present. For more information see .
Parameter | Description |
text | The license plate text. |
country | The 3 letter country names in the Alpha-3 ISO-3166 format. |
height | The height of the license plate, measured in pixels. |
width | The width of the license plate, measured in pixels. |
left | The left coordinate of the license plate, measured in pixels. |
top | The top coordinate of the license plate, measured in pixels. |
listName | The name of the list. It will be empty if the plate text cannot be found in the list, or labelled on either the Block list or Allow list if it exists. |
Action | Set to either Opened or No action depending on whether an application configuration has occurred. |
consumedTime | The license plate recognition time, measured in milliseconds (ms). |
Package sample
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
<tt:Event xmlns:tt="http://www.onvif.org/ver10/schema">
<wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
<wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tnsaxis:CameraApplicationPlatform/ALPV.AllPlates</wsnt:Topic>
<wsnt:ProducerReference>
<wsa5:Address>uri://c37d4bf5-fa69-498d-8294-e0c8ade51ded/ProducerReference</wsa5:Address>
</wsnt:ProducerReference>
<wsnt:Message>
<tt:Message UtcTime="2021-05-20T11:54:21.894000Z">
<tt:Source>
</tt:Source>
<tt:Data>
<tt:SimpleItem Name="consumedTime" Value="153" />
<tt:SimpleItem Name="frame_timestamp" Value="1288416958" />
<tt:SimpleItem Name="carMoveDirection" Value="unknown" />
<tt:SimpleItem Name="carState" Value="new" />
<tt:SimpleItem Name="action" Value="No action" />
<tt:SimpleItem Name="capture_timestamp" Value="1621511661894" />
<tt:SimpleItem Name="width" Value="168" />
<tt:SimpleItem Name="carID" Value="1139066" />
<tt:SimpleItem Name="top" Value="354" />
<tt:SimpleItem Name="country" Value="PRT" />
<tt:SimpleItem Name="left" Value="539" />
<tt:SimpleItem Name="height" Value="28" />
<tt:SimpleItem Name="listName" Value="" />
<tt:SimpleItem Name="text" Value="II04458" />
</tt:Data>
</tt:Message>
</wsnt:Message>
</wsnt:NotificationMessage>
</tt:Event>
</tt:MetadataStream>
Supported events
Event | Description |
ALPV.ALLPlates | A general metadata event that is always available and contains all data from the LPR engine. The event can be sent several times for each individual license plate: New: Used when detecting a new license plate.Update: Used when something has changed in the LPR package.Lost: Used when a vehicle has left the frame (+ 10 seconds after the latest detection). |
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
<tt:Event xmlns:tt="http://www.onvif.org/ver10/schema">
<wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
<wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tnsaxis:CameraApplicationPlatform/ALPV.AllPlates</wsnt:Topic>
<wsnt:ProducerReference>
<wsa5:Address>uri://c37d4bf5-fa69-498d-8294-e0c8ade51ded/ProducerReference</wsa5:Address>
</wsnt:ProducerReference>
<wsnt:Message>
<tt:Message UtcTime="2021-05-17T13:40:12.509000Z">
<tt:Source>
</tt:Source>
<tt:Data>
<tt:SimpleItem Name="consumedTime" Value="104" />
<tt:SimpleItem Name="frame_timestamp" Value="1039287603" />
<tt:SimpleItem Name="carMoveDirection" Value="unknown" />
<tt:SimpleItem Name="carState" Value="new" />
<tt:SimpleItem Name="action" Value="No action" />
<tt:SimpleItem Name="capture_timestamp" Value="1621258812509" />
<tt:SimpleItem Name="width" Value="192" />
<tt:SimpleItem Name="carID" Value="1087595" />
<tt:SimpleItem Name="top" Value="564" />
<tt:SimpleItem Name="country" Value="PRT" />
<tt:SimpleItem Name="left" Value="625" />
<tt:SimpleItem Name="height" Value="32" />
<tt:SimpleItem Name="listName" Value="" />
<tt:SimpleItem Name="text" Value="RZ3160" />
</tt:Data>
</tt:Message>
</wsnt:Message>
</wsnt:NotificationMessage>
</tt:Event>
</tt:MetadataStream>
Event | Description |
ALPV.List1Allow ALPV.List2Block ALPV.List3Custom ALPV.NotinList | Triggered events whose name is dependent on the list name in the application. Please note that these events are only available when a relay is connected.active = 1 active = 0 |
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
<tt:Event xmlns:tt="http://www.onvif.org/ver10/schema">
<wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
<wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tnsaxis:CameraApplicationPlatform/ALPV.NotInList</wsnt:Topic>
<wsnt:ProducerReference>
<wsa5:Address>uri://c37d4bf5-fa69-498d-8294-e0c8ade51ded/ProducerReference</wsa5:Address>
</wsnt:ProducerReference>
<wsnt:Message>
<tt:Message UtcTime="2021-05-17T15:42:54.961154Z" PropertyOperation="Changed">
<tt:Source>
</tt:Source>
<tt:Key>
</tt:Key>
<tt:Data>
<tt:SimpleItem Name="active" Value="0" />
</tt:Data>
</tt:Message>
</wsnt:Message>
</wsnt:NotificationMessage>
</tt:Event>
</tt:MetadataStream>
Event | Description |
ALPV.Roi1 ALPV.Roi2 | Triggered events.active = 1 active = 0 |
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
<tt:Event xmlns:tt="http://www.onvif.org/ver10/schema">
<wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
<wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tnsaxis:CameraApplicationPlatform/ALPV.Roi1</wsnt:Topic>
<wsnt:ProducerReference>
<wsa5:Address>uri://c37d4bf5-fa69-498d-8294-e0c8ade51ded/ProducerReference</wsa5:Address>
</wsnt:ProducerReference>
<wsnt:Message>
<tt:Message UtcTime="2021-05-17T14:00:01.613199Z" PropertyOperation="Changed">
<tt:Source>
</tt:Source>
<tt:Key>
</tt:Key>
<tt:Data>
<tt:SimpleItem Name="active" Value="1" />
</tt:Data>
</tt:Message>
</wsnt:Message>
</wsnt:NotificationMessage>
</tt:Event>
</tt:MetadataStream>
Event | Description |
ALPV.PlateIN ALPV.PlateOUT | Triggered events. Please note that these events are only available when a relay is connected.active = 1 active = 0 |
<tt:MetadataStream xmlns:tt="http://www.onvif.org/ver10/schema">
<tt:Event xmlns:tt="http://www.onvif.org/ver10/schema">
<wsnt:NotificationMessage xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa5="http://www.w3.org/2005/08/addressing">
<wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">tnsaxis:CameraApplicationPlatform/ALPV.PlateIn</wsnt:Topic>
<wsnt:ProducerReference>
<wsa5:Address>uri://c37d4bf5-fa69-498d-8294-e0c8ade51ded/ProducerReference</wsa5:Address>
</wsnt:ProducerReference>
<wsnt:Message>
<tt:Message UtcTime="2021-05-17T16:24:19.596468Z" PropertyOperation="Changed">
<tt:Source>
</tt:Source>
<tt:Key>
</tt:Key>
<tt:Data>
<tt:SimpleItem Name="active" Value="1" />
</tt:Data>
</tt:Message>
</wsnt:Message>
</wsnt:NotificationMessage>
</tt:Event>
</tt:MetadataStream>
HTTP management API
This API is used when you want to query for either events or managing settings.
Event search and download
Use this method when you want to download recorded data from the database in either a filtered or unfiltered format. All parameters listed below can be used independently and the string inputs are treated as not case sensitive.
Request
- Access control
admin
- Method
GET
http://<servername>/local/fflprapp/search.cgi?<argument>=<value>[&<argument>=<value>...]
Argument | Description |
Text | The text on the license plate, either all or part of it, such as AA11 ,AA1122BB or AA1134XX . |
Limit | The number of events in a reply package, such as the SQL LIMIT clause. |
Offset | The amount of records that should be skipped before filling a reply, such as the SQL OFFSET clause. |
timestampFrom | The timestamp that filter records by time, measured in milliseconds (ms). May be used without TimestampTo . |
timestampTo | The timestamp that filter records by time, measured in milliseconds (ms). May be used without TimestampFrom . |
country | The name of a country or regional part of it. |
Action | The filter used when an action is taken. 1 = opened and 0 = no action . |
http://10.0.3.100/local/fflprapp/search.cgi?timestampfrom=1467648840000000×tampto=146764 8 874652000&text=&action=&country=&limit=11&offset=0
http://10.0.3.100/local/fflprapp/search.cgi?limit=20
Response
Field | Description |
TS | A license plate timestamp presented in a Unix format and measured in milliseconds. |
MOD_TS | A license plate timestamp presented in a readable format. |
CAR_ID | The vehicle ID, stored on a database. |
LPR | The license plate text. |
RTIME | The time spent for the application to recognise a license plate, measured in milliseconds. |
ACTION | Used when a barrier action is taken. 1 = opened and 0 = no action . |
ACT_PARAM | Deprecated. |
THRESHOLD | The value of the license plate, based on range and precision of the camera (float). |
ROI_X | ROI coordinates and dimensions. |
ROI_Y | |
ROI_W | |
ROI_H | |
LP_X | License plate coordinates and dimensions. |
LP_Y | |
LP_W | |
LP_H | |
LP_BMP | The URL for a license plate image stored on a camera. Addhttp://<servername>/local/fflprapp/ when using it in a request. |
ROI_BMP | The URL for a ROI image, stored on a camera. Addhttp://<servername>/local/fflprapp/ when using it in a request. |
COUNTRY | The 3–letter country name according to the Alpha-3 ISO-3166 format. |
DIRECTION | 0 = Unknown 1 = Undefined 2 = In 3 = Out |
<events>
<currentTimestampUs>1548942667892206</currentTimestampUs>
<event>
<TS>1548941557723043</TS>
<MOD_TS>2019-01-31 13:32:37 GMT<MOD_TS>
<END_TS>0</END_TS>
<CAR ID>17</CAR_ID>
<LPR>ABC1234</LPR>
<RTIME>140.0</RTIME>
<ACTION>100</ACTION>
<ACT PARAM/>
<THRESHOLD>0.745121419429779</THRESHOLD>
<ROI_X>96</ROI_X>
<ROI_Y>54</ROI_Y>
<ROI_W>1728</ROI_W>
<ROI_H>972</ROI_H>
<LP_X>224</LP_X>
<LP_Y>932</LP_Y>
<LP_W>92</LP_W>
<LP_H>28</LP_H>
<ROI_ID>1</ROI_ID>
<ROI_IDU>0</ROI_IDU>
<FRAMES>0</FRAMES>
<DISTANCE>0</DISTANCE>
<SPEED>0</SPEED>
<DIRECTION>0</DIRECTION>
<LP_BMP>tools.cgi?action=getImage&name=3/20190131133237_723075lp_ABC1234_35133.png</LP_BMP>
<ROI_BMP>tools.cgi?action=getImage&name=3/20190131133237_723075lp_ABC1234_35133.png</ROI_BMP>
<COUNTRY>GBR</COUNTRY>
</event>
</events>
List management
Use this method when you want to read and update the allow and/or block list in the camera.
<?xml version="1.0" encoding="utf-8"?>
<bw_list mode="allow">
<s>ZZ0000DD</s>
<s>ZZ0999DD</s>
</bw_list>
<?xml version="1.0" encoding="utf-8"?>
<bw_list mode="block">
<s>ZZ12300DD</s>
<s>ZZ2229DD</s>
</bw_list>
Get list request
Use this method when you want to retrieve a list of license plate numbers.
- Access control
admin
- Method
GET
http://<servername>/local/fflprapp/allow_list.cgi
<bw_list mode="allow">
<s>ABC123</s>
<s>ACB567</s>
</bw_list>
http://<servername>local/fflprapp/block_list.cgi
<bw_list mode="block">
<s>CBA321</s>
<s>BCC231</s>
</bw_list>
Update list request
Use this method when you want to update the list by either adding or removing a single license plate.
Please note that single plate entries are only supported up to AXIS License Plate Verifier version 2.0.
- Access control
admin
- Method
POST
http://<servername>/local/fflprapp/allow_list.cgi
curl -i -X POST -H "Content-Type: text/xml" --anyauth -uroot:pass http://192.168.1.1/local/fflprapp/allow_list.cgi --data "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><bw_list mode="allow"><s>ABC123</s><s>CBA000</s></bw_list>
http://<servername>/local/fflprapp/block_list.cgi
curl -i -X POST -H "Content-Type: text/xml" --anyauth -uroot:pass http://192.168.1.1/local/fflprapp/block_list.cgi --data "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><bw_list mode="block"><s>XYZ321</s><s>VWQ456</s></bw_list>
Please note that when updating the lists, you need to post the complete lists as the API currently doesn’t support updating single entries.
Add a single plate to the list
curl --trace-ascii trace.txt --anyauth -u "root:pass" -X GET "http://10.0.3.176:8080/local/fflprapp/api.cgi?api=addplate&plate=testA,testplate&list=allow"
Parameter | Description |
testA | The license plate. |
testplate | The description. |
test%20A | The license plate with added space. |
While adding a plate it is possible to set the plate description.
Remove a single plate from the list
curl --trace-ascii trace.txt --anyauth -u "root:pass" -X GET "http://10.0.3.176:8080/local/fflprapp/api.cgi?api=delplate&plate=testA&list=allow"
Parameter | Description |
delplate | The license plate. |
Export API
Use this method when you want to export either the Block or Allow list to a camera.
Export Block list
http://<servername>/local/fflprapp/api.cgi?api=exportblock
curl -o /tmp/fflprapp_block.csv --anyauth -u "root:pass1234" -X GET "http://10.0.3.167/local/fflprapp/api.cgi?api=exportblock"
Export Allow list
http://<servername>/local/fflprapp/api.cgi?api=exportallow
curl -o /tmp/fflprapp_block.csv --anyauth -u "root:pass1234" -X GET "http://10.0.3.167/local/fflprapp/api.cgi?api=exportallow"
Upload API
Use this method when you want to upload the Allow or Block list to your camera as a .csv file.
http://<servername>/local/fflprapp/upload.cgi
Commands
http://<servername>/local/fflprapp/upload.cgi?command=new&list=<file name>.csv
http://<servername>/local/fflprapp/upload.cgi?command=upload&list=<file name>.csv
http://<servername>/local/fflprapp/upload.cgi?command=save&list=<file name>.csv
#!/bin/bash
#example:
#./send_list.sh block root:pass 10.0.3.167 block_list.csv
#./send_list.sh allow root:pass 10.0.3.167 allow_list.csv
#set -x
#clean temporary folder
rm -rf .$1
#recreate temporary folder .block or .allow
mkdir .$1
#go to temporary folder
cd .$1
#split input file in small chunks
split -l 500 ../$4
#Create new list
curl --anyauth -u "$2" -X POST -d "command=new&list=$1"
http://$3/local/fflprapp/upload.cgi
#upload data for
i in `ls`;do
curl --anyauth -u "root:pass1234" -X POST -d "command=upload&list=$1" - data-urlencode "data@$i" http://$3/local/fflprapp/upload.cgi done
#save&apply list
curl --anyauth -u "$2" -X POST -d "command=save&list=$1" http://$3/local/fflprapp/upload.cgi
#leave temporary folder
cd .. #data in temporary folder not deleted for checking !
Get statistics
Use this method when you want to retrieve a list containing statistics for events, such as points of interests, country of origin, etc.
http://10.0.3.176:8080/local/fflprapp/search.cgi?limit=0
http://10.0.3.176:8080/local/fflprapp/search.cgi?timestampform=15940980000000xtampto=1594130400000000& text=R&action=1&country=&ro1_id=1&car_direction=3&limit=11&offset=0&format=0&limit=0
<events>
<currentTimestampUs>1594113488922244</currentTimestampUs>
<vcount>
<direction>
<in>0</in>
<out>6</out>
<unk>0</unk>
</direction>
<list>
<blocklist>0</blocklist>
<allowlist>0</allowlist>
<nonelist>6</nonelist>
</list>
<roi>
<roi1>6</roi1>
<roi2>0</roi2>
</roi>
<total>6</total>
</vcount>
</events>
Webservice API
This API is used when you want to push data to a configured server on the network whenever a plate is detected using either HTTP or TCP. Using HTTP makes it possible access the metadata (i.e. the plate numbers) and retrieve an image of the plate or a full frame image depending on the settings in the Save full frame option.
List configuration
Request
- Access control
admin
- Method
GET
http://<servername>/local/fflprapp/cloud.cgi
<?xml version="1.0" encoding="utf-8"?>
<cloud_config>
<cloud_url>10.13.24.13/alpv/receive.php</cloud_url>
<latitude>50.418114</latitude>
<longitude>30.476213</longitude>
<sensorProviderID>defaultID</sensorProviderID>
<protocol>1</protocol>
<enable>false</enable>
</cloud_config>
Field | Description |
cloud_url | The URL or IP address to which the data should be pushed in the format <IP>:port/path . There won’t be any path present when using the TCP option, only the IP and port. |
latitude | The camera latitude. |
longitude | The camera longitude. |
sensorProviderID | An identifier for the camera that will be sent with all requests when running multiple cameras in order to separate them. |
protocol | 0: TCP 1: HTTP |
enable | true: Function is enabled. false: Function is disabled. |
Update configuration
- Access control
admin
- Method
POST
http://<servername>/local/fflprapp/cloud.cgi
curl -i -X POST -H "Content-Type: text/xml" --anyauth -uroot:pass http://192.168.1.1/local/fflprapp/cloud.cgi -data "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><cloud config><cloud url>10.13.24.13:7865</cloud url><latitude>50.418114</latitude><longitude>30.476213</longitude><sensorProviderID>defaultID</sensorProviderID><protocol>0</protocol><enable>true</enable></cloud_config>"
Receiving the data
Data format of received data
Token | Type | Format / Value | Description |
packetCounter | Unsigned integer | The counter for sent packages. Starts on 1 after a successful connection and resets upon re-connecting. | |
Datetime | String | YYYYMMDD HHMMSSFFF[+HHMM] | Timestamp for the data: YYYY = year MM = month DD = day HH = hours MM = minutes SS = seconds FFF = milliseconds HHMM = optional timezones (hours, minutes) |
plateText | Unicode string | \u0041\u0041…. | The plate number presented in unicode. |
plateCountry | ASCII string | [DNK, .......UKR] | The country code, according to ISO 3166-1 alpha-3 |
plateConfidence | Float | The recognition confidence, ranging from 0.5 (least confident) to 0.9 (most confident). | |
carState | ASCII string | [new, updated] | The event type. |
geotag: {"lat":, "lon":} | JSON objects with floats | 50.418114,30.476213 | Latitude and longitude. |
imageType | ASCII string | [plate, frame] | The kind of attached image: either a plate only rectangle with the plate number or the full frame. |
plateImageType | ASCII string | [png, jpeg, bmp] | The format of the attached image. |
plateImageSize | Unsigned long | 0 | The size of an attached image (in bytes). Will be 0 when using TCP. |
carMoveDirection | String | unk in out | The direction of the car. A configuration needs to made in the GUI for this value to be accurate by pointing the arrow in the driving direction. |
timeProcessing | Unsigned integer | The time it takes for an image to process, measured in milliseconds. | |
plateCoordinates | Array of unsigned integers | [left, top, width, height] | The location and size of the plate in the image. This is used when you want to configure the application to send full frames so that a plate can be highlighted by the receiver. |
carID | Unsigned long | The internal ID for the plate. | |
GEOtarget | String | Camera | Always set to the camera for the AXIS License plate verifier. |
sensorProviderID | ASCII string | The readable ID as specified in the configuration. |
Using TCP
Use this method when you want to make the server listen for connections on the port specified in your configuration. To do this, a JSON needs to be sent with the specified fields from the previous chapter.
{
"packetCounter":"11890300",
"capture_timestamp":"1623405938252",
"frame_timestamp":"0",
"capture_ts":"1623405938252000000",
"datetime":"20210611 130538252",
"plateText":"\u0052\u004c\u0045\u0031\u0031\u0036\u0038\u0034",
"plateUnicode":"\u0052\u004c\u0045\u0031\u0031\u0036\u0038\u0034",
"plateUTF8":"RLE11684",
"plateASCII":"RLE11684",
"plateCountry":"POL",
"plateConfidence":"0.719034",
"carState":"lost",
"roiID":"2",
"geotag":{
"lat": 50.418114,
"lon": 30.476213
},
"imageType": "plate",
"plateImageType": "jpg",
"plateImageSize": "0",
"carMoveDirection":"in",
"timeProcessing":"0",
"plateCoordinates":[1185, 532, 140, 28],
"plateCoordinatesRelative":[1030, 196, 140, 28],
"carID":"1144696",
"GEOtarget":"Camera",
"imagesURI":[
"/local/fflprapp/tools.cgi?action=getImage&name=45/20210611130538_785523lp_RLE11684_11890182.jpg",
"/local/fflprapp/tools.cgi?action=getImage&name=44/20210611130538_547764roi_RLE11684_11890181.jpg"
],
"imageFile":"/var/spool/storage/SD_DISK/fflprapp/images/44/20210611130538_547764roi_RLE11684_11890181.jpg",
"camera_info":{
"SerialNumber":"ACCC8ED3290D",
"ProdShortName":"AXIS P1445-LE-3",
"MACAddress":"AC:CC:8E:D3:29:0D"
},
"sensorProviderID":"defaultID_176"
}
Using HTTP
Use this method when you want to use a web service capable of handling incoming HTTP POST requests that needs to be set up with the IP and path specified in the configuration.
Content is sent from the camera to the server as a HTTP POST request with the Content-type: multipart/formdata
.
POST /alpv/receive.php HTTP/1.1\r\n
Host: 10.13.24.13\r\n
Content-Length: 7160\r\n
Content-Type: multipart/form-data; boundary=------------------------3df4e8eee91da308\r\n
--------------------------3df4e8eee91da308
Content-Disposition: form-data; name="event";
filename="20190204103017_10536event_7000175.json" Content-Type: application/octet-stream
{
"packetCounter":"11890300",
"capture_timestamp":"1623405938252",
"frame_timestamp":"0",
"capture_ts":"1623405938252000000",
"datetime":"20210611 130538252",
"plateText":"\u0052\u004c\u0045\u0031\u0031\u0036\u0038\u0034",
"plateUnicode":"\u0052\u004c\u0045\u0031\u0031\u0036\u0038\u0034",
"plateUTF8":"RLE11684",
"plateASCII":"RLE11684",
"plateCountry":"POL",
"plateConfidence":"0.719034",
"carState":"lost",
"roiID":"2",
"geotag":{
"lat": 50.418114,
"lon": 30.476213
},
"imageType": "plate",
"plateImageType": "jpg",
"plateImageSize": "0",
"carMoveDirection":"in",
"timeProcessing":"0",
"plateCoordinates":[1185, 532, 140, 28],
"plateCoordinatesRelative":[1030, 196, 140, 28],
"carID":"1144696",
"GEOtarget":"Camera",
"imagesURI":[
"/local/fflprapp/tools.cgi?action=getImage&name=45/20210611130538_785523lp_RLE11684_11890182.jpg",
"/local/fflprapp/tools.cgi?action=getImage&name=44/20210611130538_547764roi_RLE11684_11890181.jpg"
],
"imageFile":"/var/spool/storage/SD_DISK/fflprapp/images/44/20210611130538_547764roi_RLE11684_11890181.jpg",
"camera_info":{
"SerialNumber":"ACCC8ED3290D",
"ProdShortName":"AXIS P1445-LE-3",
"MACAddress":"AC:CC:8E:D3:29:0D"
},
"sensorProviderID":"defaultID_176"
}
--------------------------3df4e8eee91da308
Content-Disposition: form-data; name="image";
filename="20190204103016_999776lp_LBE397_7000175.png" Content-Type: application/octetstream
<IMAGE DATA>
--------------------------3df4e8eee91da308--
PHP example of a receiver
Use this method when you want to receive data that can be stored as files using PHP.
<?php
# Create files in the following directory
$uploaddir = 'log/';
# Set path and filename where to store the event
$uploadfile = $uploaddir . basename($_FILES['event']['name']);
# Store the JSON file on disk
if (move_uploaded_file($_FILES['event']['tmp_name'], $uploadfile)) {
# All good, do other things here
} else {
# Failed moving file, do proper error handling
}
# Set path end filename where to store the image
$uploadfile = $uploaddir . basename($_FILES['image']['name']);
# Store the image file on disk
if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) {
# All good, do other things here
} else {
# Failed moving file, do proper error handling
}
?>