From 29e1d98294d03ce49759b725e823a45d96dc0739 Mon Sep 17 00:00:00 2001 From: Mathieu Broillet Date: Sat, 20 Jul 2024 23:08:09 +0200 Subject: [PATCH] add preview --- README.md | 2 ++ preview-webui.webp | Bin 0 -> 25530 bytes 2 files changed, 2 insertions(+) create mode 100644 preview-webui.webp diff --git a/README.md b/README.md index acfe7c3..b69a3ee 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Easy local ALPR (Automatic License Plate Recognition) +![ALPR](preview-webui.webp) + This script is a REST API server that uses [ultimateALPR-SDK](https://github.com/DoubangoTelecom/ultimateALPR-SDK) to process images and return the license plate information. The server is created using Flask and the ultimateALPR SDK is used to process the images. diff --git a/preview-webui.webp b/preview-webui.webp new file mode 100644 index 0000000000000000000000000000000000000000..80591487b69c97515f33a1a861a500d52927a0db GIT binary patch literal 25530 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≥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