中文文档
python -m pip install hyperlpr3
# image url
lpr3 sample -src https://koss.iyong.com/swift/v1/iyong_public/iyong_2596631159095872/image/20190221/1550713902741045679.jpg
# image path
lpr3 sample -src images/test_img.jpg -det high
# import opencv
import cv2
# import hyperlpr3
import hyperlpr3 as lpr3
# Instantiate object
catcher = lpr3 . LicensePlateCatcher ()
# load image
image = cv2 . imread ( "images/test_img.jpg" )
# print result
print ( catcher ( image ))
# start server
lpr3 rest --port 8715 --host 0.0.0.0
Pfad zum Öffnen von SwaggerUI nach dem Start: http://localhost:8715/api/v1/docs Sehen und testen Sie den Online-Identifikations-API-Dienst:
F: Stimmt die Genauigkeit von Android im Projekt mit der von APK-Demo überein?
A: Bitte kompilieren oder laden Sie die gemeinsam genutzte Android-Bibliothek aus der Version herunter und kopieren Sie sie zum Testen auf Prj-Android.
F: Quelle der Schulungsdaten für Nummernschilder?
A: Da die für die Schulung verwendeten Nummernschilddaten Datenschutz- und andere Aspekte betreffen, können sie in diesem Projekt nicht bereitgestellt werden. Öffnen Sie weitere große Datensätze CCPD-Registrierungsdatensatz。
F: Bereitstellung eines Schulungscodes?
A:Die Ressourcen stellen den alten Trainingscode bereit, und die Trainingsmethoden für HyperLPR3 werden später aussortiert und vorgestellt.。
HyperLPR3车牌识别-五分钟搞定: 中文车牌识别光速部署与使用
HyperLPR3 ist die neueste Version des Android-SDK
HyperLPR3-Version – Linux/MacOS-Version: C/C++-Version
HyperLPR3-Version – Android-Version: SDK-Version
Wird hinzugefügt... Beiträge willkommen
HyperLPRv1
HyperLPRv2
Das Kompilieren von C/C++-Projekten erfordert die Verwendung von Abhängigkeitsbibliotheken von Drittanbietern. Nachdem Sie die Bibliothek heruntergeladen haben, entpacken Sie sie und legen Sie sie durch Kopieren oder Softlinking im Stammverzeichnis (auf derselben Ebene wie CMakeLists.txt) ab. Baidu-Laufwerkscode: eu31
# execute the script
sh command/build_release_linux_share.sh
Kompiliert in das Verzeichnis build/linux/install/hyperlpr3 , das Folgendes enthält:
Kopieren Sie die benötigten Dateien in Ihr Projekt
# go to Prj-linux
cd Prj-Linux
# exec sh
sh build.sh
Das ausführbare Programm wird nach der Kompilierung generiert: PlateRecDemo ,und Führen Sie das Programm aus
# go to build
cd build/
# first param models dir, second param image path
./PlateRecDemo ../hyperlpr3/resource/models/r2_mobile ../hyperlpr3/resource/images/test_img.jpg
// Load image
cv:: Mat image = cv :: imread ( image_path );
// Create a ImageData
HLPR_ImageData data = { 0 };
data . data = image . ptr < uint8_t > ( 0 ); // Setting the image data flow
data . width = image . cols ; // Setting the image width
data . height = image . rows ; // Setting the image height
data . format = STREAM_BGR ; // Setting the current image encoding format
data . rotation = CAMERA_ROTATION_0 ; // Setting the current image corner
// Create a Buffer
P_HLPR_DataBuffer buffer = HLPR_CreateDataBuffer ( & data );
// Configure license plate recognition parameters
HLPR_ContextConfiguration configuration = { 0 };
configuration . models_path = model_path ; // Model folder path
configuration . max_num = 5 ; // Maximum number of license plates
configuration . det_level = DETECT_LEVEL_LOW ; // Level of detector
configuration . use_half = false;
configuration . nms_threshold = 0.5f ; // Non-maxima suppress the confidence threshold
configuration . rec_confidence_threshold = 0.5f ; // License plate number text threshold
configuration . box_conf_threshold = 0.30f ; // Detector threshold
configuration . threads = 1 ;
// Instantiating a Context
P_HLPR_Context ctx = HLPR_CreateContext ( & configuration );
// Query the Context state
HREESULT ret = HLPR_ContextQueryStatus ( ctx );
if ( ret != HResultCode :: Ok ) {
printf ( "create error.n" );
return -1 ;
}
HLPR_PlateResultList results = { 0 };
// Execute LPR
HLPR_ContextUpdateStream ( ctx , buffer , & results );
for ( int i = 0 ; i < results . plate_size ; ++ i ) {
// Getting results
std:: string type ;
if ( results . plates [ i ]. type == HLPR_PlateType :: PLATE_TYPE_UNKNOWN ) {
type = “ Unknown ";
} else {
type = TYPES [ results . plates [ i ]. type ];
}
printf ( "<%d> %s, %s, %fn" , i + 1 , type . c_str (),
results . plates [ i ]. code , results . plates [ i ]. text_confidence );
}
// Release Buffer
HLPR_ReleaseDataBuffer ( buffer );
// Release Context
HLPR_ReleaseContext ( ctx );
# execute the script
sh command/build_release_android_share.sh
Kompiliert nach: build/release_android/ ,Das enthält:
Nach dem Kompilieren kopieren Sie die Verzeichnisse arm64-v8a und armeabi-v7a nach Prj-Android/hyperlpr3/libs und kompilieren Sie das zu verwendende Prj-Android- Projekt.
Wenn Sie mit Docker kompilieren müssen, bieten wir einige Möglichkeiten zum Kompilieren an:
Sie müssen Docker und Docker-Compose installieren. Image für hyperlpr_build erstellen:
docker build -t hyperlpr_build .
Beginnen Sie mit der Kompilierung der gemeinsam genutzten Bibliothek:
docker-compose up build_linux_x86_shared_lib
Build-Verzeichnis: build/linux
Wir haben ein Demoprojekt aus der Android SDK-Quelle bereitgestellt: hyperlpr3-android-sdk,Sie können die gemeinsam genutzte Bibliothek kompilieren und das Projekt nach Bedarf verwenden.
Wenn Sie unser SDK schnell in Ihr eigenes Android-Projekt integrieren müssen, können Sie die folgende Abhängigkeit zum build.gradle Ihres Projekts hinzufügen:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.HyperInspire:hyperlpr3-android-sdk:1.0.3'
}
// Initialization, which can be performed only once, is usually performed at program initialization
HyperLPR3 . getInstance (). init ( this , new HyperLPRParameter ());
…
// exec recognition
Plate [] plates = HyperLPR3 . getInstance (). plateRecognition ( bitmap , HyperLPR3 . CAMERA_ROTATION_0 , HyperLPR3 . STREAM_BGRA );
Erfahren Sie mehr über: Prj-Android