REST API - Send Image to PEKAT
Image processing works on the principle of sending the image via HTTP request. Only one image can be sent per request. (MODIFY & DELETE)
Enable Process
User must enable ‘Process’ on the left of the panel in Camera tab to be able to process the image sent through API.
Request
The sending address consists of IP address, port, and type. The method must be of ‘POST’ type, and the content type of ‘application/octet-stream’ type.
Find a practical API demonstration in Python at GitHub Image Analyze API.
Example of a Python code sending requests with raw images from camera:
import cv2 import requests cap = cv2.VideoCapture(0) # you can set frame size # cap.set(cv2.CAP_PROP_FRAME_WIDTH, 960) # cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 540) # keep alive request_session = requests.Session() while True: # get frame from camera ret, frame = cap.read() # get image shape shape = frame.shape # send frame to PEKAT VISION response = requests.post( url='http://127.0.0.1:8000/analyze_raw_image?width='+str(shape[1])+'&height='+str(shape[0]), data=frame.tobytes(), headers={'Content-Type': 'application/octet-stream'} ) print(response.json())
IP Address
If the project runs on a local computer, the address is 127.0.0.1. If a remote computer is accessed, then you need to use the IP address of the remote computer.
Port
This is selected when starting the project.
API Key
If the project is running with “Secure image analyze” option enabled, each request in the parameter query must contain the API key that is generated after you enable this option.
'http://127.0.0.1:8000/analyze_image?api_key=553d7790-827c-11ec-978b-6da1176c0b00'
Data
You can add extra information to the request. This string will be added to the context (key is data). It is available only in the Code module (context variable).
'http://127.0.0.1:8000/analyze_image?width=1920&height=1024&data=SomeInfo'
In Code module you can access this string using:
context['data']
Types
analyze_raw_image
Used for sending the image as raw data. For example, the numpy array in Python is converted to binary format.
You need to send the image dimensions in query parameters width and height.
Example of a 1920x1024 image:
'http://127.0.0.1:8000/analyze_raw_image?width=1920&height=1024'
If you are sending Bayer RG 8 data, it is necessary to add an argument bayer.
'http://127.0.0.1:8000/analyze_raw_image?width=1920&height=1024&bayer'
analyze_image
For sending an image in ‘jpg’ or ‘png’ formats. - PASS THROUGH THE FLOW,TRAINED MODELS…
Example
'http://127.0.0.1:8000/analyze_image'
Example with API key
'http://127.0.0.1:8000/analyze_image?api_key=SUPER_SECRET'
Response
Query parameter ‘response_type’ determines the response type.
‘context’ – a serialized context in JSON format. context will be always there by result
context starts empty by the deafult, JSON dictonary.. also contatins images
priintscreen
‘image’ – processed image - output image that passed through the flow…..
‘annotated_image’ – processed image with annotations - heatmaps over the image….
‘heatmap’ - response is heatmap ‘.png’ image format - only the heat maps over the image (without the image!)…….
For image and annotated_image types, the serialized context is added to the header with the header title: context.