中文文档
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
Chemin pour ouvrir SwaggerUI après le démarrage:http://localhost:8715/api/v1/docs Afficher et tester le service API d'identification en ligne :
Q:La précision d'Android dans le projet est-elle cohérente avec celle d'apk-demo?
R : Veuillez compiler ou télécharger la bibliothèque partagée Android à partir de la version et copiez-la sur Prj-Android pour la tester.
Q:Source des données de formation pour les plaques d'immatriculation?
R : Étant donné que les données de plaque d'immatriculation utilisées pour la formation impliquent des questions de confidentialité juridique et d'autres problèmes, elles ne peuvent pas être fournies dans ce projet. Ouvrez davantage d'ensembles de données volumineuses Ensemble de données d'enregistrement CCPD。
Q:Fourniture du code de formation?
R:Les ressources fournissent l'ancien code de formation, et les méthodes de formation pour HyperLPR3 seront triées et présentées plus tard.
HyperLPR3车牌识别-五分钟搞定 : 中文车牌识别光速部署与使用
Le kit de développement HyperLPR3-Android-SDK est disponible
Logiciel HyperLPR3-Linux/MacOS : logiciel C/C++
Logiciel HyperLPR3-Android : SDK pour le SDK
A ajouter... Les contributions sont les bienvenues
HyperLPRv1
HyperLPRv2
La compilation de projets C/C++ nécessite l'utilisation de bibliothèques de dépendances tierces. Après avoir téléchargé la bibliothèque, décompressez-la et placez-la dans le répertoire racine (au même niveau que CMakeLists.txt) en copiant ou en créant un lien logiciel. code du lecteur baidu : eu31
# execute the script
sh command/build_release_linux_share.sh
Compilé dans le répertoire build/linux/install/hyperlpr3 ,Qui contient:
Copiez les fichiers dont vous avez besoin dans votre projet
# go to Prj-linux
cd Prj-Linux
# exec sh
sh build.sh
Le programme exécutable est généré après compilation : PlateRecDemo ,et Exécutez le programme
# 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
Compilé dans : build/release_android/ ,Qui contient:
Après la compilation, copiez les répertoires arm64-v8a et armeabi-v7a dans Prj-Android/hyperlpr3/libs et compilez le projet Prj-Android à utiliser.
Si vous devez compiler avec Docker, nous proposons plusieurs façons de compiler :
Vous devez installer docker et docker-compose,Build Image pour hyperlpr_build :
docker build -t hyperlpr_build .
Commencez à compiler la bibliothèque partagée :
docker-compose up build_linux_x86_shared_lib
Répertoire de build : build/linux
Nous avons fourni un projet de démonstration à partir de la source du SDK Android : hyperlpr3-android-sdk. Vous pouvez compiler la bibliothèque partagée et utiliser le projet selon vos besoins.
Si vous avez besoin d'intégrer rapidement notre SDK dans votre propre projet Android, vous pouvez ajouter la dépendance suivante au build.gradle de votre projet :
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 );
En savoir plus sur : Prj-Android