Full ALPR Database System for Blue Iris!

@MikeLud1 are these coordinates that are already in the &JSON output from the cropped image? I'm slightly confused but I think that's what's going on, weird dimensions though. Can I start making columns for these or is it going to look different?


JSON:
[
  {
    "api": "alpr",
    "found": {
      "success": true,
      "processMs": 436,
      "inferenceMs": 354,
      "predictions": [
        {
          "confidence": 0.9422435760498047,
          "label": "Plate: T121396C",
          "plate": "T121396C",
          "x_min": 469,
          "y_min": 557,
          "x_max": 614,
          "y_max": 677
        },
        {
          "confidence": 0.7209769487380981,
          "label": "Plate: KYJ5",
          "plate": "KYJ5",
          "x_min": 210,
          "y_min": 481,
          "x_max": 295,
          "y_max": 558
        }
      ],
      "message": "Found Plate: T121396C, Plate: KYJ5",
      "moduleId": "ALPR",
      "moduleName": "License Plate Reader",
      "code": 200,
      "command": "alpr",
      "requestId": "6a5d387c-807a-47b6-a4f7-17425b934318",
      "inferenceDevice": "GPU",
      "analysisRoundTripMs": 633,
      "processedBy": "localhost",
      "timestampUTC": "Tue, 19 Nov 2024 23:51:20 GMT"
    }
  }
]


Exactly what needs to be stored, and does anything need to be done to the values? Explain like I'm five please
 
I haven’t actually tested it on a deployment with data in it, so maybe make a copy of the directory first if you can, just in case…
I must be doing something wrong. I installed WSL and tried to run the following command:

curl -sSL | bash

and I get an error that the docker daemon is not running even though it is.

Screen Shot 2025-02-04 at 9.55.42 PM.png
 
No that checks out I didn't think about that. It's looking for a docker engine in the wsl system which is not what we want.

I'm gonna see what happens if I just throw the script at an AI and tell it to convert it to powershell...
 
@MikeLud1 are these coordinates that are already in the &JSON output from the cropped image? I'm slightly confused but I think that's what's going on, weird dimensions though. Can I start making columns for these or is it going to look different?


JSON:
[
  {
    "api": "alpr",
    "found": {
      "success": true,
      "processMs": 436,
      "inferenceMs": 354,
      "predictions": [
        {
          "confidence": 0.9422435760498047,
          "label": "Plate: T121396C",
          "plate": "T121396C",
          "x_min": 469,
          "y_min": 557,
          "x_max": 614,
          "y_max": 677
        },
        {
          "confidence": 0.7209769487380981,
          "label": "Plate: KYJ5",
          "plate": "KYJ5",
          "x_min": 210,
          "y_min": 481,
          "x_max": 295,
          "y_max": 558
        }
      ],
      "message": "Found Plate: T121396C, Plate: KYJ5",
      "moduleId": "ALPR",
      "moduleName": "License Plate Reader",
      "code": 200,
      "command": "alpr",
      "requestId": "6a5d387c-807a-47b6-a4f7-17425b934318",
      "inferenceDevice": "GPU",
      "analysisRoundTripMs": 633,
      "processedBy": "localhost",
      "timestampUTC": "Tue, 19 Nov 2024 23:51:20 GMT"
    }
  }
]


Exactly what needs to be stored, and does anything need to be done to the values? Explain like I'm five please
The bounding box four values are in pixels: [x_min, y_min, x_max, y_max].
x_min and y_min are coordinates of the top-left corner of the bounding box.
x_max and y_max are coordinates of bottom-right corner of the bounding box.
 
Last edited:
The bounding box four values are in pixels: [x_min, y_min, x_max, y_max].
x_min and y_min are coordinates of the top-left corner of the bounding box.
x_max and y_max are coordinates of bottom-right corner of the bounding box

Im asking if those values that are already in it are for the cropped image or something else. What is the part that you have to add? I copied that json from one of your posts many pages back.

And what format are the coordinates going to need to end up in before training? Can I just put them all together in a jsonv column for each recognition?
 
Im asking if those values that are already in it are for the cropped image or something else. What is the part that you have to add? I copied that json from one of your posts many pages back.

And what format are the coordinates going to need to end up in before training? Can I just put them all together in a jsonv column for each recognition?
I will make the code changes tonight so you can see the training annotation format.
 
  • Like
Reactions: algertc
Maybe give this a try @Vettester.
I had to change the Powershell execution policy to get it to run, but it still doesn't work.

Code:
PS C:\alpr> .\update.ps1
At C:\alpr\update.ps1:207 char:71
+ ...         $new_compose = $new_compose -replace '"3000:', """$APP_PORT:"
+                                                               ~~~~~~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name character. Consider using ${} to delimit the name.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : InvalidVariableReferenceWithDrive
 
Last edited:
Anyone know what causes thumbnails to randomly disappear--it was there 20 mins ago. The full-size image is there, and browser refresh doesn't help.

Thanks

1738776836593.png
 
"PM" is a very popular plate in my database! But only in the afternoon.

1738793022676.png
 
Have you considered masking that area out?
Where would I mask it out? I still want it to be recorded to disk (it's burned in at the camera), but I don't want it analyzed by the LPR module. Thanks!
 
I had to change the Powershell execution policy to get it to run, but it still doesn't work.

Code:
PS C:\alpr> .\update.ps1
At C:\alpr\update.ps1:207 char:71
+ ...         $new_compose = $new_compose -replace '"3000:', """$APP_PORT:"
+                                                               ~~~~~~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name character. Consider using ${} to delimit the name.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : InvalidVariableReferenceWithDrive
Alright ill have to find a windows machine to use and debug it then. You can still update it manually though. Just use :nightly at the end of the docker image name in the compose file instead of :latest.
 
  • Like
Reactions: Vettester
Where would I mask it out?
In BI under Camera settings | Trigger | Motion sensor (Configure) | Use zones and hot spot (Edit...). This only masks the area so triggers will not occur in the masked area. Your timestamp will still be included in images/video.

Screen Shot 2025-02-05 at 3.49.07 PM.png