Cover image: Viktor Theo / Unsplash
Sumário
Recently, we published an article here on the dtLabs blog demonstrating how our Edge AI platform, AIOS, allows you to create in a few minutes, and without writing a single line of code, a computer vision solution for forklift detection.
But the possibilities of AIOS go much further. In this second article in the “AIOS in Action” series, we will demonstrate how to do something very useful for segments such as property security or urban monitoring: automatic license plate reading (also known as ALPR, or ANPR, from Automated Number Plate Recognition).
If you are not familiar with the topic, we recommend reading the article “Everything About ALPR: What It Is, What It’s For, and How to Ensure the Best Results”, right here on the blog. In it, we explain how this technology works and its benefits, and give valuable tips that will help you be more successful in its implementation.
To follow along this tutorial, you will need access to AIOS and an AIBox, as well as an IP video source (an RTSP stream) that can be connected to the platform, showing the objects to be detected (cars and license plates). However, even without access to the platform, you will quickly understand the ease of use and flexibility of our software.
Pipelines and Components
AIOS works with the concept of Components and Pipelines. A Component is an object that performs a simple task, such as receiving video from a camera, detecting an object, counting the number of times an event occurs, or identifying changes in an area of the image. In turn, a Pipeline is the name given to a set of interconnected components that capture and process the image for a specific purpose.
All work in AIOS takes place in a Pipeline. So the first thing we have to do is create one. In the AIOS interface, select the item Pipelines (the triangle) in the toolbar on the left of the screen, and click the button +Add Pipeline, in the upper right corner.

Click on the drop-down menu under Device, in the upper left corner of the screen, and select your AIBox. Then click Add component in the upper right corner. The first component we will use is the Video Feed, which indicates the video source that will be used for detection, as well as the associated parameters. Just click Video Feed in the list on the right of the screen and in an empty space on the workspace to position it.
There are some parameters of the Video Feed component that we must configure. URL is the URL of the camera’s video stream that will be used in detection, in the format rtsp://admin:password@192.168.15.100:554.
The parameters admin and password are, respectively, the username and password required to access the stream. After the @ we have the camera’s IP address (in the example, 192.168.15.100) and port (554). Remember that the parameters shown here are just an example, you must fill in the real values corresponding to your camera.
In FPS you must enter the number of frames per second that will be processed during detection, between 1 and 10. As in our example (a scene at a gas station) the vehicles are stopped, we can use a lower value to save on processing. For this use case, 5 FPS is sufficient.
In RTSP-format, enter the format (codec) used by your camera in the video stream. For example, h264. We won’t need to modify any other values now. The box Video Feed it will look like this:

Now let’s add one more component to our workspace, called ALPRComponent. Position it below Video Feed. For components to be able to communicate, they need to be connected: to do this, simply click on the small orange circle at the bottom edge of Video Feed box and drag the mouse to the small orange circle at the top edge of the ALPR box. A dotted line will appear, demonstrating the connection between them.

Finding the Plate
The ALPR component works in two steps. At first, it tries to find a license in the image. Here, the Plate Size parameter comes into play. In a simplified way, only plates with a size greater than or equal to the specified value (in pixels) will be considered for detection. This avoids, for example, wasting resources trying to read license plates that are too far from the camera, and therefore too small to achieve good results.
And how do we know the size of the plate? One way is to capture a video frame of the monitored scene (for example, taking a screenshot of the full-screen video) and open this image in an image editor, such as Paint.
Use the line tool and draw a line from one edge to the other of a plate you would like the system to detect. At the bottom of the window, Paint will show the size of this line, and therefore the plate, in pixels. This is the value to use in the component.

Are You Confident Enough?
After a plate is identified in the image, the component will read the characters present on it. For this, Optical Character Recognition (OCR) technology is used. This is where another parameter of the ALPR component comes into play, called OCR Confidence.
OCR assigns a confidence level to each recognized character, which represents how certain (in percentage, represented as a decimal value) the algorithm is that the character is what it appears to be.
It is tempting to leave this parameter at 1 (100%), to guarantee that the system “will not make mistakes”, but here “perfect is the enemy of good”: if set this way, the system would fail to recognize a character with 70% confidence (0.7), a very high confidence, leading to detection failures.

On the other hand, a value that is too low can lead to false positives. Let’s say you leave the confidence at 0.2 (20%) and have a plate that is difficult to read, whether due to ambiguous characters or poor lighting. On that plate, you have a letter S, but the algorithm interprets it as a 5, with 25% confidence. As a result, the value returned will be 5 (since it is above the confidence threshold), and as a result you will get an incorrect reading.
The default confidence value of the ALPR component, 0.45 (45%) is enough for good results in most cases, but you can, and should, adjust this value if necessary. If you have problems with “false negatives” (characters not being recognized), you can lower this value. If the problem is with “false positives” (incorrect characters), you can increase it.
The last parameter of the ALPR component is the Frequency Threshold, which defines the number of times a license plate needs to be detected before it is “officially” assigned to the vehicle. You can leave this parameter at the default value, 5.
Testing the Component
With everything configured, click the Save button at the top of the screen. On the next screen, you will be able to view the result of your pipeline. Click the Play button (the triangle) at the top of the screen and wait a few seconds for AIOS to load the image. Now just check the Preview area to see if the plates are being correctly recognized. If not, adjust the Plate Size and OCR Trust parameters until the results are to your liking.

If you prefer, you can check out a video version of this guide. Portuguese audio only.
Conclusion
Of course, license plates aren’t the only thing you can detect with AIOS. You can detect the use of PPE (Personal Protective Equipment) by its employees, monitor forklift traffic, detect intrusions in restricted areas, calculate the volume of objects, perform quality control on a production line, identify fire and smoke, monitor parking spaces, and much more. It would not be possible to list all the applications in one article.
This flexibility highlights AIOS as a comprehensive and versatile Edge AI and computer vision platform. With its ability to serve diverse sectors — from industry to logistics, security to smart cities — AIOS offers innovative solutions that transform visual data into actionable insights and tangible results, without the need for technical expertise.
Count on AIOS to accelerate your digital transformation journey, and discover why we have satisfied customers in more than 15 countries.