OpenALPR (Automatic License Plate Recognition)으로 자동차 번호판 인식하는 소스이며, 내부에는 tesseract OCR을 이용하여 이를 작동한다고 한다.
- NVIDIA Deepstream SDK 4.0 API
https://docs.nvidia.com/metropolis/deepstream/4.0/dev-guide/DeepStream_Development_Guide/baggage/modules.html
- NVIDIA L4T Multimedia API
https://docs.nvidia.com/jetson/l4t-multimedia/group__l4t__mm__nvbuffer__group.html
- Tesseract OCR 설치
https://ahyuo79.blogspot.com/2019/05/tesseract-ocr.html
- OpenALPR을 이용하여 만든 시스템
https://www.rekorsystems.com/
https://youtu.be/ofpxX49vdXY
-다른 동영상
https://www.youtube.com/watch?v=w6gs10P2e1k
1.1 OpenALPR 관련소스 와 사용법
OpenALPR (Automatic License Plate Recognition)
https://www.openalpr.com/
https://github.com/openalpr/openalpr
OpenALPR 관련 Project 전부
https://github.com/openalpr
1.2 Jetson 에 OpenALPR 설치
$ sudo apt-get update && sudo apt-get install -y openalpr openalpr-daemon openalpr-utils libopenalpr-dev $ sudo apt list | grep tesseract // 현재 4.0 지원 설치확인 libtesseract-dev/bionic 4.00~git2288-10f4998a-2 arm64 libtesseract4/bionic,now 4.00~git2288-10f4998a-2 arm64 [installed,automatic] tesseract-ocr/bionic 4.00~git2288-10f4998a-2 arm64 tesseract-ocr-afr/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-all/bionic 4.00~git2288-10f4998a-2 all tesseract-ocr-amh/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-ara/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-asm/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-aze/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-aze-cyrl/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-bel/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-ben/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-bod/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-bos/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-bre/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-bul/bionic 4.00~git24-0e00fe6-1.2 all tesseract-ocr-cat/bionic 4.00~git24-0e00fe6-1.2 all .... $ sudo apt install tesseract-ocr $ sudo apt install libtesseract-dev $ sudo apt install tesseract-ocr-eng // 영어 모델 $ sudo apt install tesseract-ocr-kor // 한글 모델 $ alpr ./test.JPG Error opening data file /usr/share/openalpr/runtime_data/ocr/lus.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language 'lus' Tesseract couldn't load any languages! Image file not found: test.JPG $ sudo ln -s /usr/share/openalpr/runtime_data/ocr/tessdata/lus.traineddata /usr/share/openalpr/runtime_data/ocr/lus.traineddata $ alpr ./test.JPG plate0: 10 results - GS00 confidence: 79.1004 - GSH00 confidence: 78.1927 - NGS00 confidence: 77.5058 - NGSH00 confidence: 76.5981 - GSD0 confidence: 76.2403 - GSHD0 confidence: 75.3326 - HGS00 confidence: 75.3263 - GSO0 confidence: 75.1033 - NGSD0 confidence: 74.6456 - HGSH00 confidence: 74.4186 # Test US plates $ wget http://plates.openalpr.com/ea7the.jpg $ alpr -c us ea7the.jpg # Test European plates $ wget http://plates.openalpr.com/h786poj.jpg $ alpr -c eu h786poj.jpg $ ls /etc/openalpr/ alprd.conf openalpr.conf $ ls /usr/share/openalpr/config/ alprd.defaults.conf openalpr.defaults.conf $ vi /usr/share/openalpr/config/openalpr.defaults.conf // debug 옵션 및 기타 설정가능 ..... debug_general = 0 debug_timing = 0 debug_detector = 1 debug_prewarp = 0 debug_state_id = 0 debug_plate_lines = 1 debug_plate_corners = 0 debug_char_segment = 0 debug_char_analysis = 0 debug_color_filter = 0 debug_ocr = 1 debug_postprocess = 0 debug_show_images = 0 debug_pause_on_frame = 0
OpenALPR 설치 및 기본사용법
http://doc.openalpr.com/compiling.html
http://doc.openalpr.com/on_premises.html
2. Deepstream SDK 3.0 과 OpenALPR 테스트
OpenALPR을 가지고, Deepstream의 Gst-Plugin을 추가하여 사용되는 소스가 존재하며, 이를 간단하게 진행해보면, 빌드가 되지 않는데, 이 소스가 DeepStream SDK 1.0 기준으로
작성되어 동작되지 않는 것 같다.
Deepstream SDK의 Gstreamer OpenALPR PlugIn
https://github.com/openalpr/deepstream_jetson
$ cd ~ $ git clone https://github.com/openalpr/deepstream_jetson $ cd deepstream_jetson $ make // gstdsexample.h:21:10: fatal error: nvbuf_utils.h: No such file or directory $ vi Makefile // Deepstream SDK의 Version이 다르며, 1.0과 호환되는 것 같다. #CFLAGS+= \ # -I../nvgstiva-app_sources/nvgstiva-app/includes CFLAGS+= \ -I../deepstream_sdk_on_jetson/sources/includes $ make // Deepstream SDK Version이 맞지 않아 빌드가 되지 않는다. gstdsexample.h:22:10: fatal error: gstnvivameta_api.h: No such file or directory
DeepSream SDK 1.0 관련내용
https://tech-blog.abeja.asia/entry/deepstream-sdk-jetson
2.1 Commerical OpenALPR Porting (유료버전)
DeepStream SDK 3.0에서도 동일하게 gst-dsexample을 제공하고 있으며, 이 소스를 변경하여 테스트를 진행해보자.
간단히 소스를 분석하면, Commercial OpenALPR의 소스를 사용하고 있어, 이에 관련된 SDK도 필요하며, 사용하고 싶다면 상용버전을 사야할 것 같지만, 일단 무료로 다운받아보고 설치해보자.
- Commercial OpenALPR SDK 설치
$ sudo apt install curl $ bash <(curl -s https://deb.openalpr.com/install)
아래와 같이 선택해서 설치하자.
- install _webserver : 현재설치시 에러 발생
- install_agent : 설치완료
- install_sdk : 설치완료
- install_nvidia: 설치완료
http://doc.openalpr.com/sdk.html#linux
- gst-dsopenaplr 기본구성
소스을 두 소스를 비교를 해서 수정을 많이 해야한다.
$ cp -a ../deepstream_sdk_on_jetson/sources/gst-plugins/gst-dsexample ../deepstream_sdk_on_jetson/sources/gst-plugins/gst-openaplr $ cp -a dsopenalpr_lib ../deepstream_sdk_on_jetson/sources/gst-plugins/gst-openaplr/ $ cd ~/deepstream_sdk_on_jetson/sources/gst-plugins/gst-openaplr $ rm -rf dsexample_lib
소스를 수정하여 구성해도, 내부함수가 라이센스 키가 없으면, 아무런 동작하지 않기때문에 다른방법을 찾아봐야겠다. 유료버전을 사용한다면 이렇게 구성해서 사용하도록하자.
OpenALPR 의 Commercial Version의 장점
http://doc.openalpr.com/opensource.html#commercial-enhancements
2.2 OpenALPR을 gst-dsexample 연결 ( 무료 )
상위와 같이 DeepStream SDK 3.0의 gst-dsexample을 이용하여 비슷하게 구성하고, 소스를 전부 분석하여 본인이 직접 만들어나가는 수 밖에 없을 것 같다.
상위 OpenALPR의 소스분석하면 실행파일관련 파일들을 찾을 수 있지만, 이것들을 전부 빌드하여 넣어 동작시키기가 쉽지않다.
그래서 이 방법보다는 이를 분석해서 내가 만든것이 왠지 더 나을 것 같다.
https://github.com/openalpr/openalpr/tree/master/src/openalpr
https://github.com/openalpr/openalpr/blob/master/src/openalpr/alpr.cpp
아래의 구성으로 이 함수를 참조하여 오픈소스로 다시 해보자.
http://doc.openalpr.com/opensource.html#developers-guide
2.3 OpenALPR Cloud API 연결방법 (무료/유료)
OpenALPR의 Cloud가 제공하고 있으며, 간단하게 Cloud API로 연결하여 그림파일을 전송하면되는 방식이다.
- OpenALPR Cloud API 테스트 진행
http://www.openalpr.com/cloud-api.html
- OpenALPR Cloud API 사용방법
http://doc.openalpr.com/cloud_api.html