Coder Social home page Coder Social logo

doubangotelecom / ultimatealpr-sdk Goto Github PK

View Code? Open in Web Editor NEW
583.0 28.0 156.0 2.01 GB

World's fastest ANPR / ALPR implementation for CPUs, GPUs, VPUs and NPUs using deep learning (Tensorflow, Tensorflow lite, TensorRT, OpenVX, OpenVINO). Multi-Charset (Latin, Korean, Chinese) & Multi-OS (Jetson, Android, Raspberry Pi, Linux, Windows) & Multi-Arch (ARM, x86).

Home Page: https://www.doubango.org/webapps/alpr/

License: Other

C# 9.16% C++ 73.37% Java 11.08% Perl 1.65% Python 3.22% CMake 0.03% Batchfile 0.78% Shell 0.72%
artificial-intelligence alpr anpr anpr-sdk machine-learning deep-learning license-plate license-plate-recognition license-plate-detection raspberry-pi

ultimatealpr-sdk's Introduction


Keywords: Image Enhancement for Night-Vision (IENV), License Plate Recognition (LPR), License Plate Country Identification (LPCI), Vehicle Color Recognition (VCR), Vehicle Make Model Recognition (VMMR), Vehicle Body Style Recognition (VBSR), Vehicle Direction Tracking (VDT) and Vehicle Speed Estimation (VSE)


Have you ever seen a deep learning based ANPR/ALPR (Automatic Number/License Plate Recognition) engine running at 64fps on a $99 ARM device (Khadas VIM3, 720p video resolution)?

UltimateALPR is the fastest ANPR/ALPR implementation you'll find on the market. Being fast is important but being accurate is crucial.

We use state of the art deep learning techniques to offer unmatched accuracy and precision. As a comparison this is #33 times faster than OpenALPR on Android. (see benchmark section for more information).

No need for special or dedicated GPUs, everything is running on CPU with SIMD ARM NEON optimizations, fixed-point math operations and multithreading. This opens the doors for the possibilities of running fully featured ITS (Intelligent Transportation System) solutions on a camera without soliciting a cloud. Being able to run all ITS applications on the device will significantly lower the cost to acquire, deploy and maintain such systems. Please check Device-based versus Cloud-based solution section for more information about how this would reduce the cost.

The next video shows the Recognizer sample running on Windows:
Recognizer Running on Windows


The code is accelerated on CPU, GPU, VPU and FPGA, thanks to CUDA, NVIDIA TensorRT and Intel OpenVINO.

In addition to License Plate Recognition (LPR) we support Image Enhancement for Night-Vision (IENV), License Plate Country Identification (LPCI), Vehicle Color Recognition (VCR), Vehicle Make Model Recognition (VMMR), Vehicle Body Style Recognition (VBSR), Vehicle Direction Tracking (VDT) and Vehicle Speed Estimation (VSE).

On high-end NVIDIA GPUs like the Tesla V100 the frame rate is 315 fps which means 3.17 millisecond inference time. On high-end CPUs like Intel Xeon the maximum frame rate could be up to 237fps, thanks to OpenVINO. On low-end CPUs like the Raspberry Pi 4 the average frame rate is 12fps.

Don't take our word for it, come check our implementation. No registration, license key or internet connection is required, just clone the code and start coding/testing. Everything runs on the device, no data is leaving your computer. The code released here comes with many ready-to-use samples for Android, Raspberry Pi, Linux and Windows to help you get started easily.

You can also check our online cloud-based implementation (no registration required) to check out the accuracy and precision before starting to play with the SDK.

Please check full documentation at https://www.doubango.org/SDKs/anpr/docs/

Getting started

The SDK works on many platforms and comes with support for many programming languages but the next sections focus on Android, Raspberry Pi, Linux and Windows.

Android

The next sections are about Android and Java API.

Sample applications (Android)

The source code comes with #4 Android sample applications: Benchmark, VideoParallel, VideoSequential and ImageSnap.

Benchmark (Android)

This application is used to check everything is ok and running as fast as expected. The information about the maximum frame rate (237fps on Intel Xeon, 64fps on Khadas VIM3 and 12fps on Raspberry Pi 4) could be checked using this application. It's open source and doesn't require registration or license key.

VideoParallel (Android)

This application should be used as reference code by any developer trying to add ultimateALPR to their products. It shows how to detect and recognize license plates in realtime using live video stream from the camera. Please check Parallel versus sequential processing section for more info about parellel mode.

VideoSequential (Android)

Same as VideoParallel but working on sequential mode which means slower. This application is provided to ease comparing the modes: Parallel versus Sequential.

ImageSnap (Android)

This application reads and display the live video stream from the camera but only recognize an image from the stream on demand.

Trying the samples (Android)

To try the sample applications on Android:

  1. Open Android Studio and select "Open an existing Android Studio project" alt text

  2. Navigate to ultimateALPR-SDK/samples, select android folder and click OK alt text

  3. Select the sample you want to try (e.g. videoparallel) and press run. Make sure to have the device on landscape mode for better experience. alt text

Adding the SDK to your project (Android)

The SDK is distributed as an Android Studio module and you can add it as reference or you can also build it and add the AAR to your project. But, the easiest way to add the SDK to your project is by directly including the source.

In your build.gradle file add:

android {

      # This is the block to add within "android { } " section
      sourceSets {
         main {
             jniLibs.srcDirs += ['path-to-your-ultimateALPR-SDK/binaries/android/jniLibs']
             java.srcDirs += ['path-to-your-ultimateALPR-SDK/java/android']
             assets.srcDirs += ['path-to-your-ultimateALPR-SDK/assets/models']
         }
      }
}

Using the Java API (Android)

It's hard to be lost when you try to use the API as there are only 3 useful functions: init, process and deInit.

The C++ API is defined here.

	import org.doubango.ultimateAlpr.Sdk.ULTALPR_SDK_IMAGE_TYPE;
	import org.doubango.ultimateAlpr.Sdk.UltAlprSdkEngine;
	import org.doubango.ultimateAlpr.Sdk.UltAlprSdkParallelDeliveryCallback;
	import org.doubango.ultimateAlpr.Sdk.UltAlprSdkResult;

	final static String CONFIG = "{" +
		"\"debug_level\": \"info\"," + 
		"\"gpgpu_enabled\": true," + 
		"\"openvino_enabled\": true," +
		"\"openvino_device\": \"CPU\"," +

		"\"detect_minscore\": 0.1," + 
		"\"detect_quantization_enabled\": true," + 
		
		"\"pyramidal_search_enabled\": true," +
		"\"pyramidal_search_sensitivity\": 0.28," +
		"\"pyramidal_search_minscore\": 0.5," +
		"\"pyramidal_search_quantization_enabled\": true," +

		"\"klass_lpci_enabled\": true," +
		"\"klass_vcr_enabled\": true," +
		"\"klass_vmmr_enabled\": true," +

		"\"recogn_score_type\": \"min\"," + 
		"\"recogn_minscore\": 0.3," + 
		"\"recogn_rectify_enabled\": false," + 
		"\"recogn_quantization_enabled\": true" + 
	"}";

	/**
	* Parallel callback delivery function used to notify about new results.
	* This callback will be called few milliseconds (before next frame is completely processed)
	* after process function is called.
	*/
	static class MyUltAlprSdkParallelDeliveryCallback extends UltAlprSdkParallelDeliveryCallback {
		@Override
		public void onNewResult(UltAlprSdkResult result) { }
	}

	final MyUltAlprSdkParallelDeliveryCallback mCallback = new MyUltAlprSdkParallelDeliveryCallback(); // set to null to disable parallel mode

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		

		// Initialize the engine
		assert UltAlprSdkEngine.init(
				getAssets(),
				CONFIG,
				mCallback
		).isOK();
	}

	// Camera listener: https://developer.android.com/reference/android/media/ImageReader.OnImageAvailableListener
	final ImageReader.OnImageAvailableListener mOnImageAvailableListener = new ImageReader.OnImageAvailableListener() {

		@Override
		public void onImageAvailable(ImageReader reader) {
				try {
				    final Image image = reader.acquireLatestImage();
				    if (image == null) {
				        return;
				    }

				    // ANPR/ALPR recognition
				    final Image.Plane[] planes = image.getPlanes();
				    final UltAlprSdkResult result = UltAlprSdkEngine.process(
				        ULTALPR_SDK_IMAGE_TYPE.ULTALPR_SDK_IMAGE_TYPE_YUV420P,
				        planes[0].getBuffer(),
				        planes[1].getBuffer(),
				        planes[2].getBuffer(),
				        image.getWidth(),
				        image.getHeight(),
				        planes[0].getRowStride(),
				        planes[1].getRowStride(),
				        planes[2].getRowStride(),
				        planes[1].getPixelStride()
				    );
				    assert result.isOK();

				    image.close();

				} catch (final Exception e) {
				   e.printStackTrace();
				}
		}
	};

	@Override
	public void onDestroy() {
		// DeInitialize the engine
		assert UltAlprSdkEngine.deInit().isOK();

		super.onDestroy();
	}

Again, please check the sample applications for Android, Raspberry Pi, Linux and Windows and full documentation for more information.

Raspberry Pi (Raspbian OS), Linux, NVIDIA Jetson, Windows and others

Sample applications (Raspberry Pi, Linux, NVIDIA Jetson, Windows and others)

The source code comes with #2 C++ sample applications: Benchmark and Recognizer. These sample applications can be used on all supported platforms: Android, Windows, Raspberry Pi, iOS, OSX, Linux...

Benchmark (Raspberry Pi, Linux, NVIDIA Jetson, Windows and others)

This application is used to check everything is ok and running as fast as expected. The information about the maximum frame rate (237fps on Intel Xeon, 47fps on Snapdragon 855, 152fps on Jetson NX, 64fps on Khadas VIM3, 30fps on Jetson nano and 12fps on Raspberry Pi 4) could be checked using this application. It's open source and doesn't require registration or license key.

For more information on how to build and run this sample please check samples/c++/benchmark.

Recognizer (Raspberry Pi, Linux, NVIDIA Jetson, Windows and others)

This is a command line application used to detect and recognize a license plate from any JPEG/PNG/BMP image.

For more information on how to build and run this sample please check:

Using the C++ API

The C++ API is defined at https://www.doubango.org/SDKs/anpr/docs/cpp-api.html.

	#include <ultimateALPR-SDK-API-PUBLIC.h> // Include the API header file

	// JSON configuration string
	// More info at https://www.doubango.org/SDKs/anpr/docs/Configuration_options.html
	static const char* __jsonConfig =
	"{"
	"\"debug_level\": \"info\","
	"\"debug_write_input_image_enabled\": false,"
	"\"debug_internal_data_path\": \".\","
	""
	"\"num_threads\": -1,"
	"\"gpgpu_enabled\": true,"
	"\"openvino_enabled\": true,"
	"\"openvino_device\": \"CPU\","
	""
	"\"detect_roi\": [0, 0, 0, 0],"
	"\"detect_minscore\": 0.1,"
	""
	"\"pyramidal_search_enabled\": true,"
	"\"pyramidal_search_sensitivity\": 0.28,"
	"\"pyramidal_search_minscore\": 0.3,"
	"\"pyramidal_search_min_image_size_inpixels\": 800,"
	""
	"\"klass_lpci_enabled\": true,"
	"\"klass_vcr_enabled\": true,"
	"\"klass_vmm_enabled\": true,"
	""
	"\"recogn_minscore\": 0.3,"
	"\"recogn_score_type\": \"min\""
	"}";

	// Local variable
	UltAlprSdkResult result;

	// Initialize the engine (should be done once)
	ULTALPR_SDK_ASSERT((result = UltAlprSdkEngine::init(
		__jsonConfig
	)).isOK());

	// Processing (detection + recognition)
	// Call this function for every video frame
	const void* imageData = nullptr;
	ULTALPR_SDK_ASSERT((result = UltAlprSdkEngine::process(
			ULTMICR_SDK_IMAGE_TYPE_RGB24,
			imageData,
			imageWidth,
			imageHeight
		)).isOK());

	// DeInit
	// Call this function before exiting the app to free the allocate resources
	// You must not call process() after calling this function
	ULTALPR_SDK_ASSERT((result = UltAlprSdkEngine::deInit()).isOK());

Again, please check the sample applications for more information on how to use the API.

Technical questions

Please check our discussion group or twitter account

ultimatealpr-sdk's People

Contributors

doubangotelecom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ultimatealpr-sdk's Issues

Not working with CameraX APIs

Unable to get any result with the below code

imageAnalyzer.setAnalyzer(new ImageAnalysis.Analyzer() {
            @Override
            public void analyze(ImageProxy image, int rotationDegrees) {
                try {
                    final ImageProxy.PlaneProxy[] planes = image.getPlanes();

                    if(image.getFormat() == ImageFormat.YUV_420_888) {

                        final UltAlprSdkResult result = /*AlprUtils.assertIsOk*/(UltAlprSdkEngine.process(
                                ULTALPR_SDK_IMAGE_TYPE.ULTALPR_SDK_IMAGE_TYPE_YUV420P,
                                planes[0].getBuffer(),
                                planes[1].getBuffer(),
                                planes[2].getBuffer(),
                                image.getWidth(),
                                image.getHeight(),
                                planes[0].getRowStride(),
                                planes[1].getRowStride(),
                                planes[2].getRowStride(),
                                planes[1].getPixelStride(),
                                rotationDegrees
                        ));

                        float maxConfidence = 0;
                        String numberPlate = "";
                        for (AlprUtils.Plate resultPlate : AlprUtils.extractPlates(result)) {
                            if (maxConfidence < resultPlate.getRecognitionConfidence()) {
                                maxConfidence = resultPlate.getRecognitionConfidence();
                                numberPlate = resultPlate.getNumber();
                            }
                        }

                    }
                } catch (final Exception e) {
                    e.printStackTrace();
                }
            }
        });



/**
     * Parallel callback delivery function used to notify about new results.
     * This callback will be called few milliseconds (before next frame is completely processed)
     * after process function is called.
     */
    static class MyUltAlprSdkParallelDeliveryCallback extends UltAlprSdkParallelDeliveryCallback {
        @Override
        public void onNewResult(UltAlprSdkResult result) {

            float maxConfidence = 0;
            String numberPlate = "";
            for (AlprUtils.Plate resultPlate : AlprUtils.extractPlates(result)) {
                if (maxConfidence < resultPlate.getRecognitionConfidence()) {
                    maxConfidence = resultPlate.getRecognitionConfidence();
                    numberPlate = resultPlate.getNumber();
                }
            }
            if (maxConfidence != 0) {
                if (numberPlate.length() > 8) {
                    Log.d("WTF", numberPlate);
                }
            }
        }
    }

Java/Maven project example

Hi!

This is a great project, thanks for your work!

Do you have any plans on publishing this library in a Maven repository?

Also could you provide a Java project example (non Android)?

Thank you

image

error while loading shared libraries: libultimate_alpr-sdk.so: cannot open shared object file: No such file or directory

Hi. I'm trying to use the recognizer sample on a Raspberry Pi 4

After building on the Pi itself with:

cd ultimateALPR-SDK-master/samples/c++/recognizer
g++ recognizer.cxx -O3 -I../../../c++ -L../../../binaries/raspbian/armv7l -lultimate_alpr-sdk -o recognizer

Then when I run the recognizer file, I get this:

 ./recognizer: error while loading shared libraries: libultimate_alpr-sdk.so: cannot open shared object file: No such file or directory

I can find libultimate_alpr-sdk.so in the repo:

pi@raspberrypi:~/ultimateALPR-SDK-master $ find . -name "libultimate_alpr-sdk.so"
./binaries/raspbian/armv7l/libultimate_alpr-sdk.so

How I can resolve this ? Thanks.

I also tried to build with -v to get some more log. Hope this could help:

pi@raspberrypi:~/ultimateALPR-SDK-master/samples/c++/recognizer $ g++ recognizer.cxx -O3 -I../../../c++ -L../../../binaries/raspbian/armv7l -lultimate_alpr-sdk -o recognizer -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/8/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Raspbian 8.3.0-6+rpi1' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 8.3.0 (Raspbian 8.3.0-6+rpi1)
COLLECT_GCC_OPTIONS='-O3' '-I' '../../../c++' '-L../../../binaries/raspbian/armv7l' '-o' 'recognizer' '-v' '-shared-libgcc'  '-mfloat-abi=hard' '-mfpu=vfp' '-mtls-dialect=gnu' '-marm' '-march=armv6+fp'
 /usr/lib/gcc/arm-linux-gnueabihf/8/cc1plus -quiet -v -I ../../../c++ -imultilib . -imultiarch arm-linux-gnueabihf -D_GNU_SOURCE recognizer.cxx -quiet -dumpbase recognizer.cxx -mfloat-abi=hard -mfpu=vfp -mtls-dialect=gnu -marm -march=armv6+fp -auxbase recognizer -O3 -version -o /tmp/cc2qrF6m.s
GNU C++14 (Raspbian 8.3.0-6+rpi1) version 8.3.0 (arm-linux-gnueabihf)
        compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.20-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory "/usr/include/arm-linux-gnueabihf/c++/8"
ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabihf"
ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabihf/8/../../../../arm-linux-gnueabihf/include"
#include "..." search starts here:
#include <...> search starts here:
 ../../../c++
 /usr/include/c++/8
 /usr/include/arm-linux-gnueabihf/c++/8
 /usr/include/c++/8/backward
 /usr/lib/gcc/arm-linux-gnueabihf/8/include
 /usr/local/include
 /usr/lib/gcc/arm-linux-gnueabihf/8/include-fixed
 /usr/include/arm-linux-gnueabihf
 /usr/include
End of search list.
GNU C++14 (Raspbian 8.3.0-6+rpi1) version 8.3.0 (arm-linux-gnueabihf)
        compiled by GNU C version 8.3.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.20-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 7defdc925cf5fede452fc531d54623d1
COLLECT_GCC_OPTIONS='-O3' '-I' '../../../c++' '-L../../../binaries/raspbian/armv7l' '-o' 'recognizer' '-v' '-shared-libgcc'  '-mfloat-abi=hard' '-mfpu=vfp' '-mtls-dialect=gnu' '-marm' '-march=armv6+fp'
 as -v -I ../../../c++ -march=armv6 -mfloat-abi=hard -mfpu=vfp -meabi=5 -o /tmp/ccyVVDSy.o /tmp/cc2qrF6m.s
GNU assembler version 2.31.1 (arm-linux-gnueabihf) using BFD version (GNU Binutils for Raspbian) 2.31.1
COMPILER_PATH=/usr/lib/gcc/arm-linux-gnueabihf/8/:/usr/lib/gcc/arm-linux-gnueabihf/8/:/usr/lib/gcc/arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/8/:/usr/lib/gcc/arm-linux-gnueabihf/
LIBRARY_PATH=/usr/lib/gcc/arm-linux-gnueabihf/8/:/usr/lib/gcc/arm-linux-gnueabihf/8/../../../arm-linux-gnueabihf/:/usr/lib/gcc/arm-linux-gnueabihf/8/../../../:/lib/arm-linux-gnueabihf/:/lib/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/
COLLECT_GCC_OPTIONS='-O3' '-I' '../../../c++' '-L../../../binaries/raspbian/armv7l' '-o' 'recognizer' '-v' '-shared-libgcc'  '-mfloat-abi=hard' '-mfpu=vfp' '-mtls-dialect=gnu' '-marm' '-march=armv6+fp'
 /usr/lib/gcc/arm-linux-gnueabihf/8/collect2 -plugin /usr/lib/gcc/arm-linux-gnueabihf/8/liblto_plugin.so -plugin-opt=/usr/lib/gcc/arm-linux-gnueabihf/8/lto-wrapper -plugin-opt=-fresolution=/tmp/ccq7QxjQ.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=gnu -m armelf_linux_eabi -o recognizer /usr/lib/gcc/arm-linux-gnueabihf/8/../../../arm-linux-gnueabihf/crt1.o /usr/lib/gcc/arm-linux-gnueabihf/8/../../../arm-linux-gnueabihf/crti.o /usr/lib/gcc/arm-linux-gnueabihf/8/crtbegin.o -L../../../binaries/raspbian/armv7l -L/usr/lib/gcc/arm-linux-gnueabihf/8 -L/usr/lib/gcc/arm-linux-gnueabihf/8/../../../arm-linux-gnueabihf -L/usr/lib/gcc/arm-linux-gnueabihf/8/../../.. -L/lib/arm-linux-gnueabihf -L/usr/lib/arm-linux-gnueabihf /tmp/ccyVVDSy.o -lultimate_alpr-sdk -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/arm-linux-gnueabihf/8/crtend.o /usr/lib/gcc/arm-linux-gnueabihf/8/../../../arm-linux-gnueabihf/crtn.o
COLLECT_GCC_OPTIONS='-O3' '-I' '../../../c++' '-L../../../binaries/raspbian/armv7l' '-o' 'recognizer' '-v' '-shared-libgcc'  '-mfloat-abi=hard' '-mfpu=vfp' '-mtls-dialect=gnu' '-marm' '-march=armv6+fp'

Running the SDK in Python

Hello and thanks for your work,

In the documentation it says that it can be used in Python but I didn't find any example or documentation regarding how to use it with Python. Can you please point me in the right direction?

Thanks

Running in a Linux x86

Hi, I wanted to know if you can run your sdk on my linux machine, in binaries directory I found only android and raspberry project.

Error in Visual Studio

Hello , i have problem while trying to build the c++ sample in Visual Studio 2019 with 2015 build settings this error comes up

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(1875,5): warning : The referenced project '..\..\..\..\SDK_dev\lib\ultimateALPR-SDK.vcxproj' does not exist. recognizer.cxx recognizer.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class ultimateAlprSdk::UltAlprSdkResult __cdecl ultimateAlprSdk::UltAlprSdkEngine::init(char const *,struct ultimateAlprSdk::UltAlprSdkParallelDeliveryCallback const *)" (__imp_?init@UltAlprSdkEngine@ultimateAlprSdk@@SA?AVUltAlprSdkResult@2@PBDPBUUltAlprSdkParallelDeliveryCallback@2@@Z) referenced in function _main recognizer.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class ultimateAlprSdk::UltAlprSdkResult __cdecl ultimateAlprSdk::UltAlprSdkEngine::deInit(void)" (__imp_?deInit@UltAlprSdkEngine@ultimateAlprSdk@@SA?AVUltAlprSdkResult@2@XZ) referenced in function _main recognizer.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class ultimateAlprSdk::UltAlprSdkResult __cdecl ultimateAlprSdk::UltAlprSdkEngine::process(enum ultimateAlprSdk::ULTALPR_SDK_IMAGE_TYPE,void const *,unsigned int,unsigned int,unsigned int,int)" (__imp_?process@UltAlprSdkEngine@ultimateAlprSdk@@SA?AVUltAlprSdkResult@2@W4ULTALPR_SDK_IMAGE_TYPE@2@PBXIIIH@Z) referenced in function _main C:\Users\Ivan\Desktop\ultimateALPR-SDK-master\samples\c++\recognizer\Debug\recognizer.exe : fatal error LNK1120: 3 unresolved externals

Referenced binaries are not available

You mention prebuilt binaries in the PDF document which are not available in the repository. Would you mind sharing Windows binaries? (either privately or public)

Failed when using recognizer with command line

*[ULTALPR_SDK INFO]: Starting recognizer...
*[COMPV INFO]: [UltAlprSdkEngine] Call: init
*[COMPV INFO]: [UltAlprSdkEngine] jsonConfig: {"debug_level": "info","debug_write_input_image_enabled": false,"debug_internal_data_path": ".","num_threads": -1,"gpgpu_enabled": true,"detect_roi": [0, 0, 0, 0],"detect_minscore": 0.1,"detect_pyramidal_search_enabled": false,"recogn_minscore": 0.3,"recogn_score_type": "min","recogn_rectify_enabled": false}
*[COMPV INFO]: [UltAlprSdkEngine] **** Copyright (C) 2011-2019 Doubango Telecom https://www.doubango.org ****
ultimateALPR-SDK https://github.com/DoubangoTelecom/ultimateALPR-SDK version 2.2.1

*[COMPV INFO]: [CompVBase] Initializing [base] modules (v 1.0.0, nt -1)...
*[COMPV INFO]: [CompVBase] sizeof(compv_scalar_t)= #4
*[COMPV INFO]: [CompVBase] sizeof(float)= #4
[COMPV INFO]: Initializing window registery
[COMPV INFO]: [ImageDecoder] Initializing image decoder...
[COMPV INFO]: [CompVCpu] Hardware: 'BCM2835', Serial: '
', Model: 'Raspberry Pi 4 Model B Rev 1.1'
*[COMPV INFO]: [CompVBase] CPU features: [arm];neon;neon_fma;vfpv3;vfpv4;
*[COMPV INFO]: [CompVBase] CPU cores: #4
*[COMPV INFO]: [CompVBase] CPU cache1: line size: #0B, size :#0KB
*[COMPV INFO]: [CompVBase] CPU Phys RAM size: #3854GB
*[COMPV INFO]: [CompVBase] CPU endianness: LITTLE
*[COMPV INFO]: [CompVBase] Binary type: AArch32
*[COMPV INFO]: [CompVBase] Intrinsic enabled
*[COMPV INFO]: [CompVBase] Assembler enabled
*[COMPV INFO]: [CompVBase] Code built with option /arch:NEON
*[COMPV INFO]: [CompVBase] Math Fast Trig.: true
*[COMPV INFO]: [CompVBase] Math Fixed Point: true
*[COMPV INFO]: [CompVMathExp] Init
*[COMPV INFO]: [CompVBase] Default alignment: #32
*[COMPV INFO]: [CompVBase] Best alignment: #32
*[COMPV INFO]: [CompVBase] Heap limit: #262144KB (#256MB)
*[COMPV INFO]: [CompVParallel] Initializing [parallel] module...
*[COMPV INFO]: [CompVAsyncTask11] run(coreId:requested=0,set=useless, threadId:0xb4470400, kThreadSetAffinity:false) - ENTER
*[COMPV INFO]: [CompVAsyncTask11] run(coreId:requested=1,set=useless, threadId:0xb3c6f400, kThreadSetAffinity:false) - ENTER
*[COMPV INFO]: [CompVAsyncTask11] run(coreId:requested=2,set=useless, threadId:0xb346e400, kThreadSetAffinity:false) - ENTER
*[COMPV INFO]: [CompVThreadDispatcher] Thread dispatcher created with #4 threads/#4 cores
*[COMPV INFO]: [CompVParallel] [Parallel] module initialized
*[COMPV INFO]: [CompVBase] [Base] modules initialized
*[COMPV INFO]: [CompVCore] Initializing [core] module (v 1.0.0)...
*[COMPV INFO]: [CompVAsyncTask11] run(coreId:requested=3,set=useless, threadId:0xb2c6d400, kThreadSetAffinity:false) - ENTER
*[COMPV INFO]: [CompVFeature] Registering feature factory with id = 1 and name = 'FAST (Features from Accelerated Segment Test)'...
*[COMPV INFO]: [CompVFeature] Registering feature factory with id = 8 and name = 'ORB (Oriented FAST and Rotated BRIEF)'...
*[COMPV INFO]: [CompVFeature] Registering feature factory with id = 27 and name = 'Sobel edge detector'...
*[COMPV INFO]: [CompVFeature] Registering feature factory with id = 28 and name = 'Scharr edge detector'...
*[COMPV INFO]: [CompVFeature] Registering feature factory with id = 29 and name = 'Prewitt edge detector'...
*[COMPV INFO]: [CompVFeature] Registering feature factory with id = 20 and name = 'Canny edge detector'...
*[COMPV INFO]: [CompVFeature] Registering feature factory with id = 30 and name = 'Hough standard (STD)'...
*[COMPV INFO]: [CompVFeature] Registering feature factory with id = 31 and name = 'Kernel-based Hough transform (KHT)'...
*[COMPV INFO]: [CompVFeature] Registering feature factory with id = 41 and name = 'Standard Histogram of oriented gradients (S-HOG)'...
*[COMPV INFO]: [CompVMatcher] Registering matcher factory with id = 0 and name = 'Brute force matcher'...
*[COMPV INFO]: [CompVConnectedComponentLabeling] Registering connected component labeling factory with id = 1 and name = 'PLSL (Parallel Light Speed Labeling)'...
*[COMPV INFO]: [CompVConnectedComponentLabeling] Registering connected component labeling factory with id = 19 and name = 'LMSER (Linear Time Maximally Stable Extremal Regions)'...
*[COMPV INFO]: [CompVGL] Initializing [gl] module (v 1.0.0)...
*[COMPV INFO]: [CompVGL] GL module initialized
*[COMPV INFO]: [CompVGpu] Initializing [gpu] module (v 1.0.0)...
*[COMPV INFO]: [CompVCamera] Initializing [camera] module (v 1.0.0)...
*[COMPV INFO]: [CompVDrawing] Initializing [drawing] module (v 1.0.0)...
*[COMPV INFO]: [CompVDrawing] /!\ No jpeg decoder found
*[COMPV INFO]: [CompVDrawing] Drawing module initialized
*[COMPV INFO]: [CompVGpu] GPU enabled: true
*[COMPV INFO]: /!\ Code in file 'C:/Projects/GitHub/ultimate/ultimateBase/lib/source/ultimate_base_engine.cxx' in function 'init' starting at line #26: Not optimized for GPU -> GPGPU computing not enabled or deactivated
*[COMPV INFO]: [UltBaseOpenCL] Trying to load [libOpenCL.so]
*[COMPV INFO]: [UltBaseOpenCL] Failed to load [libOpenCL.so]
*[COMPV INFO]: [UltAlprSdkEnginePrivate] **** Copyright (C) 2011-2019 Doubango Telecom https://www.doubango.org ****
You're using an unlicensed version of ultimateALPR-SDK https://github.com/DoubangoTelecom/ultimateALPR-SDK
without the rights to include the SDK in any form of commercial product.
*[COMPV INFO]: [CompVCpu] Enabling asm code
*[COMPV INFO]: [CompVCpu] Enabling intrinsic code
***[COMPV ERROR]: function: "newObj()"
file: "C:/Projects/GitHub/ultimate/ultimateOCR/lib/source/ultimate_ocr_charset.cxx"
line: "58"
message: [UltOcrCharset] Charset file at C:/Projects/GitHub/ultimate/ultimateALPR/charset_anpr_latin_size=37.txt -> /home/pi/ultimateALPR-SDK/samples/c++/recognizer/charset_anpr_latin_size=37.txt doesn't exist
***[COMPV ERROR]: function: "newObj()"
file: "C:/Projects/GitHub/ultimate/ultimateOCR/lib/source/ultimate_ocr_recognizer.cxx"
line: "637"
message: Operation Failed (COMPV_ERROR_CODE_E_FILE_NOT_FOUND) ->
***[COMPV ERROR]: function: "newObj()"
file: "C:/Projects/GitHub/ultimate/ultimateALPR/lib/source/ultimate_alpr_recognizer.cxx"
line: "66"
message: Operation Failed (COMPV_ERROR_CODE_E_FILE_NOT_FOUND) ->
***[COMPV ERROR]: function: "newObj()"
file: "C:/Projects/GitHub/ultimate/ultimateALPR/SDK_dev/lib/source/ultimate_alpr_sdk_recognizer.cxx"
line: "167"
message: Operation Failed (COMPV_ERROR_CODE_E_FILE_NOT_FOUND) -> Failed to create Alpr recognizer
***[COMPV ERROR]: function: "init()"
file: "C:/Projects/GitHub/ultimate/ultimateALPR/SDK_dev/lib/source/ultimate_alpr_sdk_private_engine.cxx"
line: "214"
message: Operation Failed (COMPV_ERROR_CODE_E_FILE_NOT_FOUND) ->
*[COMPV INFO]: [CompVBase] DeInitializing base modules (v 1.0.0)...
*[COMPV INFO]: [Thread] Thread with id=0xb4470400 will join
*[COMPV INFO]: [CompVAsyncTask11] run(threadId:0xb4470400) - EXIT
*[COMPV INFO]: Thread with id=0xb4470400 will join
*[COMPV INFO]: [Thread] Thread with id=0xb4470400 destroyed
*[COMPV INFO]: [Thread] Thread with id=0xb3c6f400 will join
*[COMPV INFO]: [CompVAsyncTask11] run(threadId:0xb3c6f400) - EXIT
*[COMPV INFO]: Thread with id=0xb3c6f400 will join
*[COMPV INFO]: [Thread] Thread with id=0xb3c6f400 destroyed
*[COMPV INFO]: [Thread] Thread with id=0xb346e400 will join
*[COMPV INFO]: [CompVAsyncTask11] run(threadId:0xb346e400) - EXIT
*[COMPV INFO]: Thread with id=0xb346e400 will join
*[COMPV INFO]: [Thread] Thread with id=0xb346e400 destroyed
*[COMPV INFO]: [Thread] Thread with id=0xb2c6d400 will join
*[COMPV INFO]: [CompVAsyncTask11] run(threadId:0xb2c6d400) - EXIT
*[COMPV INFO]: Thread with id=0xb2c6d400 will join
*[COMPV INFO]: [Thread] Thread with id=0xb2c6d400 destroyed
*[COMPV INFO]: [CompVBase] Base modules deinitialized
*[COMPV INFO]: [CompVBase] DeInitializing base modules (v 1.0.0)...
*[COMPV INFO]: [CompVBase] Base modules deinitialized
*[COMPV INFO]: Drawing module deinitialized
*[COMPV INFO]: [CompVBase] DeInitializing base modules (v 1.0.0)...
*[COMPV INFO]: [CompVBase] Base modules deinitialized
*[COMPV INFO]: [CompVBase] DeInitializing base modules (v 1.0.0)...
*[COMPV INFO]: [CompVBase] Base modules deinitialized
*[COMPV INFO]: [CompVBase] DeInitializing base modules (v 1.0.0)...
*[COMPV INFO]: [CompVBase] Base modules deinitialized
*[COMPV INFO]: [CompVBase] DeInitializing base modules (v 1.0.0)...
*[COMPV INFO]: [CompVBase] Base modules deinitialized
*[COMPV INFO]: [CompVBase] DeInitializing base modules (v 1.0.0)...
*[COMPV INFO]: [CompVBase] Base modules deinitialized
*[COMPV ERROR]: function: "init()"
file: "C:/Projects/GitHub/ultimate/ultimateALPR/SDK_dev/lib/source/ultimate_alpr_sdk_public_engine.cxx"
line: "123"
message: Operation Failed (COMPV_ERROR_CODE_E_FILE_NOT_FOUND) -> Failed to initialize the engine
recognizer: recognizer.cxx:157: int main(int, char
): Assertion `__ULTALPR_SDK_b_ret' failed.
Aborted

run the recognizer on linux

Is there any option to run the recognizer on Linux?
I see the examples on Raspbian OS but I need it on ubuntu.
As far as I saw, there is a file called "libultimate_alpr-sdk.so", Is it possible to run this file on Ubuntu?
Thank you.

Run using python

How do we use this SDK in python. Just need a hint that's all. Thanks!

Can not find the lib sdk at Windows

Hi,
I want to try out your solution but I can not find a library for windows. At CMake I get the folllowing Error:

CMake Error at samples/c++/benchmark/CMakeLists.txt:6 (add_subdirectory):
add_subdirectory given source
"C:/projects/ultimateALPR-SDK/samples/c++/benchmark/../../../../SDK_dev/lib"
which is not an existing directory.

CMake Error at samples/c++/recognizer/CMakeLists.txt:6 (add_subdirectory):
add_subdirectory given source
"C:/projects/ultimateALPR-SDK/samples/c++/recognizer/../../../../SDK_dev/lib"
which is not an existing directory.

Also you reference at the c++ sample project to the missing folders:

Can you add the folder and library at "SDK_dev/lib" to your git repo, please?

java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/org.doubango.ultimateAlpr-2/lib/x86/libultimateALPR_SDK.so: has text relocations

Hi @DoubangoTelecom , i'm trying to run the code on a NEXUS 9 API 24 Android emulator but i get this "text relocations" error

java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/org.doubango.ultimateAlpr-2/lib/x86/libultimateALPR_SDK.so: has text relocations

Can you provide an updated version of "libultimateALPR_SDK.so" without this error, or tell me if the source codes are available so i can do it myself (compile the code with latest NDK) ?

Thanks!

Full error log

? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
? D/AndroidRuntime: CheckJNI is ON
? W/art: Unexpected CPU variant for X86 using defaults: x86
? D/ICU: No timezone override file found: /data/misc/zoneinfo/current/icu/icu_tzdata.dat
? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
? D/AndroidRuntime: CheckJNI is ON
? E/memtrack: Couldn't load memtrack module (No such file or directory)
? E/android.os.Debug: failed to load memtrack module: -2
? I/Radio-JNI: register_android_hardware_Radio DONE
? W/art: Unexpected CPU variant for X86 using defaults: x86
? D/AndroidRuntime: Calling main entry com.android.commands.wm.Wm
? D/ICU: No timezone override file found: /data/misc/zoneinfo/current/icu/icu_tzdata.dat
? D/AndroidRuntime: Shutting down VM
? E/memtrack: Couldn't load memtrack module (No such file or directory)
? E/android.os.Debug: failed to load memtrack module: -2
? I/Radio-JNI: register_android_hardware_Radio DONE
? D/AndroidRuntime: Calling main entry com.android.commands.pm.Pm
? I/art: System.exit called, status: 0
? I/AndroidRuntime: VM exiting with result code 0.
? I/studio.deploy: DeltaInstall found API level:24
? I/studio.deploy: -t
? I/studio.deploy: -r
? I/studio.deploy: DeltaInstall created session: '369342078'
? I/studio.deploy: package
? I/studio.deploy: install-write
? I/studio.deploy: -S
? I/studio.deploy: 24869269
? I/studio.deploy: 369342078
? I/studio.deploy: base.apk
? I/studio.deploy: package
? I/studio.deploy: install-commit
? I/studio.deploy: 369342078
system_process W/art: Long monitor contention with owner PackageInstaller (1732) at int android.content.res.AssetManager.getStringBlockCount!()(AssetManager.java:-2) waiters=0 in android.content.pm.PackageInstaller$SessionInfo com.android.server.pm.PackageInstallerSession.generateInfo() for 275ms
system_process I/PackageManager.DexOptimizer: Running dexopt (dex2oat) on: /data/app/vmdl369342078.tmp/base.apk pkg=org.doubango.ultimateAlpr isa=x86 vmSafeMode=false debuggable=true target-filter=interpret-only oatDir = /data/app/vmdl369342078.tmp/oat sharedLibraries=null
? W/dex2oat: Unexpected CPU variant for X86 using defaults: x86
? W/dex2oat: Mismatch between dex2oat instruction set features (ISA: X86 Feature string: smp,-ssse3,-sse4.1,-sse4.2,-avx,-avx2,-lock_add,-popcnt) and those of dex2oat executable (ISA: X86 Feature string: smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2,-lock_add,-popcnt) for the command line:
? W/dex2oat: /system/bin/dex2oat --zip-fd=6 --zip-location=base.apk --oat-fd=7 --oat-location=/data/app/vmdl369342078.tmp/oat/x86/base.odex --instruction-set=x86 --instruction-set-variant=x86 --instruction-set-features=default --runtime-arg -Xms64m --runtime-arg -Xmx512m --compiler-filter=interpret-only --swap-fd=9 --debuggable
? I/dex2oat: /system/bin/dex2oat --compiler-filter=interpret-only --debuggable
? W/dex2oat: Before Android 4.1, method int androidx.appcompat.widget.DropDownListView.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
? W/dex2oat: Before Android 4.1, method int androidx.appcompat.widget.MenuPopupWindow$MenuDropDownListView.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
? W/dex2oat: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
? I/dex2oat: dex2oat took 478.678ms (threads: 4) arena alloc=2784B (2784B) java alloc=2MB (2210888B) native alloc=3MB (3246264B) free=1949KB (1996616B)
    
    --------- beginning of system
system_process I/ActivityManager: Force stopping org.doubango.ultimateAlpr appid=10080 user=-1: installPackageLI
system_process I/PackageManager: Package org.doubango.ultimateAlpr codePath changed from /data/app/org.doubango.ultimateAlpr-1 to /data/app/org.doubango.ultimateAlpr-2; Retaining data and using new
system_process W/PackageManager: Code path for org.doubango.ultimateAlpr changing from /data/app/org.doubango.ultimateAlpr-1 to /data/app/org.doubango.ultimateAlpr-2
system_process W/PackageManager: Resource path for org.doubango.ultimateAlpr changing from /data/app/org.doubango.ultimateAlpr-1 to /data/app/org.doubango.ultimateAlpr-2
system_process I/art: Starting a blocking GC Explicit
system_process I/art: Explicit concurrent mark sweep GC freed 18013(1185KB) AllocSpace objects, 4(120KB) LOS objects, 26% free, 11MB/15MB, paused 585us total 16.868ms
system_process I/System.out: Success
system_process I/ActivityManager: Force stopping org.doubango.ultimateAlpr appid=10080 user=0: pkg removed
system_process I/InputReader: Reconfiguring input devices.  changes=0x00000010
system_process I/InputReader: Reconfiguring input devices.  changes=0x00000010
system_process I/InputReader: Reconfiguring input devices.  changes=0x00000010
system_process W/InputMethodInfo: Duplicated subtype definition found: , voice
com.android.keychain W/ContextImpl: Calling a method in the system process without a qualified user: android.app.ContextImpl.startService:1385 android.content.ContextWrapper.startService:613 android.content.ContextWrapper.startService:613 com.android.keychain.KeyChainBroadcastReceiver.onReceive:12 android.app.ActivityThread.handleReceiver:3011 
com.android.phone D/CarrierSvcBindHelper: No carrier app for: 0
com.android.phone D/CarrierSvcBindHelper: No carrier app for: 0
com.android.phone D/CarrierConfigLoader: mHandler: 9 phoneId: 0
com.google.android.gms I/Auth: [SupervisedAccountIntentOperation] onHandleIntent(): android.intent.action.PACKAGE_ADDED
com.google.android.gms I/Auth: [SupervisedAccountIntentOperation] This operation is disabled
com.google.android.gms I/ChromeSync: [Sync,SyncIntentOperation] Handling the intent: Intent { act=android.intent.action.PACKAGE_ADDED dat=package:org.doubango.ultimateAlpr flg=0x4000010 cmp=com.google.android.gms/.chimera.GmsIntentOperationService (has extras) }.
com.google.android.googlequicksearchbox:search I/UpdateIcingCorporaServi: Updating corpora: APPS=org.doubango.ultimateAlpr, CONTACTS=MAYBE
? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 2000 <<<<<<
? D/AndroidRuntime: CheckJNI is ON
? W/art: Unexpected CPU variant for X86 using defaults: x86
? D/ICU: No timezone override file found: /data/misc/zoneinfo/current/icu/icu_tzdata.dat
? E/memtrack: Couldn't load memtrack module (No such file or directory)
? E/android.os.Debug: failed to load memtrack module: -2
? I/Radio-JNI: register_android_hardware_Radio DONE
? D/AndroidRuntime: Calling main entry com.android.commands.am.Am
system_process I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=org.doubango.ultimateAlpr/.AlprBenchmarkActivity} from uid 2000 on display 0
? D/AndroidRuntime: Shutting down VM
? I/art: Not late-enabling -Xcheck:jni (already on)
? W/art: Unexpected CPU variant for X86 using defaults: x86
com.google.android.gms I/FontsPackageChangeOp: Package org.doubango.ultimateAlpr has no metadata
com.google.android.gms W/PeopleContactsSync: CP2 sync disabled by gservices.
system_process I/ActivityManager: Start proc 6539:org.doubango.ultimateAlpr/u0a80 for activity org.doubango.ultimateAlpr/.AlprBenchmarkActivity
? W/ps: type=1400 audit(0.0:7278): avc: denied { getattr } for path="/proc/1" dev="proc" ino=4053 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:init:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7279): avc: denied { search } for name="1" dev="proc" ino=4053 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:init:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7280): avc: denied { search } for name="1" dev="proc" ino=4053 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:init:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7281): avc: denied { getattr } for path="/proc/2" dev="proc" ino=39043 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7282): avc: denied { search } for name="2" dev="proc" ino=39043 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7283): avc: denied { search } for name="2" dev="proc" ino=39043 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7284): avc: denied { getattr } for path="/proc/3" dev="proc" ino=39044 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7285): avc: denied { search } for name="3" dev="proc" ino=39044 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7286): avc: denied { search } for name="3" dev="proc" ino=39044 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7287): avc: denied { getattr } for path="/proc/5" dev="proc" ino=39046 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7288): avc: denied { search } for name="5" dev="proc" ino=39046 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7289): avc: denied { search } for name="5" dev="proc" ino=39046 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7290): avc: denied { getattr } for path="/proc/7" dev="proc" ino=39048 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7291): avc: denied { search } for name="7" dev="proc" ino=39048 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7292): avc: denied { search } for name="7" dev="proc" ino=39048 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7293): avc: denied { getattr } for path="/proc/8" dev="proc" ino=39049 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7294): avc: denied { search } for name="8" dev="proc" ino=39049 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7295): avc: denied { search } for name="8" dev="proc" ino=39049 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7296): avc: denied { getattr } for path="/proc/9" dev="proc" ino=39050 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7297): avc: denied { search } for name="9" dev="proc" ino=39050 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
system_process W/art: Long monitor contention with owner android.display (1713) at int com.android.server.wm.WindowManagerService.relayoutWindow(com.android.server.wm.Session, android.view.IWindow, int, android.view.WindowManager$LayoutParams, int, int, int, int, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.graphics.Rect, android.content.res.Configuration, android.view.Surface)(WindowManagerService.java:2766) waiters=0 in void com.android.server.wm.WindowManagerService.resumeKeyDispatching(android.os.IBinder) for 111ms
? D/gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 12582912
com.google.android.gms I/Icing: IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=SEARCH_CORPORA
com.google.android.gms I/Icing: IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=SEARCH_QUERIES
com.google.android.gms I/Icing: IndexChimeraService.getServiceInterface callingPackage=com.google.android.googlequicksearchbox componentName=null serviceId=SEARCH_CORPORA
org.doubango.ultimateAlpr I/class org.doubango.ultimateAlpr.AlprBenchmarkActivity: onCreate
org.doubango.ultimateAlpr W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter androidx.vectordrawable.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
com.google.android.gms I/Icing: Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false
org.doubango.ultimateAlpr I/art: Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
org.doubango.ultimateAlpr I/art:     at void androidx.core.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2559)
org.doubango.ultimateAlpr I/art:     at void androidx.appcompat.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:63)
org.doubango.ultimateAlpr I/art:     at java.lang.Object java.lang.reflect.Constructor.newInstance0!(java.lang.Object[]) (Constructor.java:-2)
org.doubango.ultimateAlpr I/art:     at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:430)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:645)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:787)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:727)
org.doubango.ultimateAlpr I/art:     at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:858)
org.doubango.ultimateAlpr I/art:     at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:821)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:518)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:426)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:377)
org.doubango.ultimateAlpr I/art:     at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:749)
org.doubango.ultimateAlpr I/art:     at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:659)
org.doubango.ultimateAlpr I/art:     at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:552)
org.doubango.ultimateAlpr I/art:     at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:161)
org.doubango.ultimateAlpr I/art:     at void org.doubango.ultimateAlpr.AlprBenchmarkActivity.onCreate(android.os.Bundle) (AlprBenchmarkActivity.java:224)
org.doubango.ultimateAlpr I/art:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6662)
org.doubango.ultimateAlpr I/art:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1118)
org.doubango.ultimateAlpr I/art:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2599)
org.doubango.ultimateAlpr I/art:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2707)
org.doubango.ultimateAlpr I/art:     at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
org.doubango.ultimateAlpr I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1460)
org.doubango.ultimateAlpr I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
org.doubango.ultimateAlpr I/art:     at void android.os.Looper.loop() (Looper.java:154)
org.doubango.ultimateAlpr I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6077)
org.doubango.ultimateAlpr I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
org.doubango.ultimateAlpr I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:866)
org.doubango.ultimateAlpr I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:756)
org.doubango.ultimateAlpr I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/org.doubango.ultimateAlpr-2/base.apk"],nativeLibraryDirectories=[/data/app/org.doubango.ultimateAlpr-2/lib/x86, /data/app/org.doubango.ultimateAlpr-2/base.apk!/lib/x86, /system/lib, /vendor/lib]]
org.doubango.ultimateAlpr I/art:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
org.doubango.ultimateAlpr I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
org.doubango.ultimateAlpr I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
org.doubango.ultimateAlpr I/art:     at void androidx.core.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2559)
org.doubango.ultimateAlpr I/art:     at void androidx.appcompat.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:63)
org.doubango.ultimateAlpr I/art:     at java.lang.Object java.lang.reflect.Constructor.newInstance0!(java.lang.Object[]) (Constructor.java:-2)
org.doubango.ultimateAlpr I/art:     at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:430)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:645)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:787)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:727)
org.doubango.ultimateAlpr I/art:     at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:858)
org.doubango.ultimateAlpr I/art:     at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:821)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:518)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:426)
org.doubango.ultimateAlpr I/art:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:377)
org.doubango.ultimateAlpr I/art:     at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:749)
org.doubango.ultimateAlpr I/art:     at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:659)
org.doubango.ultimateAlpr I/art:     at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:552)
org.doubango.ultimateAlpr I/art:     at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:161)
org.doubango.ultimateAlpr I/art:     at void org.doubango.ultimateAlpr.AlprBenchmarkActivity.onCreate(android.os.Bundle) (AlprBenchmarkActivity.java:224)
org.doubango.ultimateAlpr I/art:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6662)
org.doubango.ultimateAlpr I/art:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1118)
org.doubango.ultimateAlpr I/art:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2599)
org.doubango.ultimateAlpr I/art:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2707)
org.doubango.ultimateAlpr I/art:     at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
org.doubango.ultimateAlpr I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1460)
org.doubango.ultimateAlpr I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
org.doubango.ultimateAlpr I/art:     at void android.os.Looper.loop() (Looper.java:154)
org.doubango.ultimateAlpr I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6077)
org.doubango.ultimateAlpr I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
org.doubango.ultimateAlpr I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:866)
org.doubango.ultimateAlpr I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:756)
com.google.android.gms I/Icing: Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false
com.google.android.gms I/Icing: Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload true
com.google.android.googlequicksearchbox:search I/UpdateIcingCorporaServi: UpdateCorporaTask done [took 330 ms] updated apps [took 330 ms] 
org.doubango.ultimateAlpr E/linker: /data/app/org.doubango.ultimateAlpr-2/lib/x86/libultimateALPR_SDK.so: has text relocations
org.doubango.ultimateAlpr D/AndroidRuntime: Shutting down VM
    
    
    --------- beginning of crash
org.doubango.ultimateAlpr E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.doubango.ultimateAlpr, PID: 6539
    java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/org.doubango.ultimateAlpr-2/lib/x86/libultimateALPR_SDK.so: has text relocations
        at java.lang.Runtime.loadLibrary0(Runtime.java:977)
        at java.lang.System.loadLibrary(System.java:1530)
        at org.doubango.ultimateAlpr.Sdk.ultimateAlprSdkJNI.<clinit>(ultimateAlprSdkJNI.java:14)
        at org.doubango.ultimateAlpr.Sdk.ultimateAlprSdkJNI.new_UltAlprSdkParallelDeliveryCallback(Native Method)
        at org.doubango.ultimateAlpr.Sdk.UltAlprSdkParallelDeliveryCallback.<init>(UltAlprSdkParallelDeliveryCallback.java:54)
        at org.doubango.ultimateAlpr.AlprBenchmarkActivity$MyUltAlprSdkParallelDeliveryCallback.<init>(AlprBenchmarkActivity.java:401)
        at org.doubango.ultimateAlpr.AlprBenchmarkActivity.onCreate(AlprBenchmarkActivity.java:235)
        at android.app.Activity.performCreate(Activity.java:6662)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6077)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
system_process W/ActivityManager:   Force finishing activity org.doubango.ultimateAlpr/.AlprBenchmarkActivity
com.android.launcher3 D/EGL_emulation: eglMakeCurrent: 0xabf85240: ver 3 1 (tinfo 0xabf83450)
com.google.android.gms I/Icing: IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=SEARCH_CORPORA
com.google.android.gms I/Icing: IndexChimeraService.getServiceInterface callingPackage=com.google.android.gms componentName=AppsCorpus serviceId=SEARCH_QUERIES
com.google.android.gms I/Icing: Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false
com.google.android.gms I/Icing: Usage reports ok 0, Failed Usage reports 0, indexed 0, rejected 0, imm upload false
system_process I/OpenGLRenderer: Initialized EGL, version 1.4
system_process D/OpenGLRenderer: Swap behavior 1
system_process W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
system_process D/OpenGLRenderer: Swap behavior 0
system_process D/EGL_emulation: eglCreateContext: 0x903ee160: maj 3 min 1 rcv 4
system_process D/EGL_emulation: eglMakeCurrent: 0x903ee160: ver 3 1 (tinfo 0x8c5c9590)
system_process E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
system_process E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008cdf
system_process E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824
system_process D/EGL_emulation: eglMakeCurrent: 0x903ee160: ver 3 1 (tinfo 0x8c5c9590)
system_process W/ActivityManager: Activity pause timeout for ActivityRecord{652a64e u0 org.doubango.ultimateAlpr/.AlprBenchmarkActivity t6 f}
com.android.launcher3 D/EGL_emulation: eglMakeCurrent: 0xabf85240: ver 3 1 (tinfo 0xabf83450)
? D/gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 4104192
com.google.android.gms I/Icing: Indexing com.google.android.gms-apps from com.google.android.gms
com.google.android.gms I/Icing: Indexing com.google.android.googlequicksearchbox-applications_uri from com.google.android.googlequicksearchbox
com.google.android.gms I/Icing: Indexing com.google.android.gms-internal.3p:MobileApplication from com.google.android.gms
com.google.android.gms I/Icing: Indexing done com.google.android.gms-apps
com.android.launcher3 W/OpenGLRenderer: Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer...
com.google.android.gms I/Icing: Indexing done com.google.android.googlequicksearchbox-applications_uri
com.google.android.gms I/Icing: Indexing done com.google.android.gms-internal.3p:MobileApplication
system_process I/WindowManager: Destroying surface Surface(name=Starting org.doubango.ultimateAlpr) called by com.android.server.wm.WindowStateAnimator.destroySurface:2016 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:882 com.android.server.wm.WindowState.removeLocked:1456 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2484 com.android.server.wm.AppWindowToken.destroySurfaces:365 com.android.server.wm.WindowStateAnimator.finishExit:565 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:427 com.android.server.wm.WindowAnimator.updateAppWindowsLocked:176 
system_process W/WindowManager: Failed looking up window
    java.lang.IllegalArgumentException: Requested window android.view.ViewRootImpl$W@377b167 does not exist
        at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:9107)
        at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:9098)
        at com.android.server.wm.WindowManagerService.removeWindow(WindowManagerService.java:2302)
        at com.android.server.wm.Session.remove(Session.java:202)
        at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:3286)
        at android.view.ViewRootImpl.doDie(ViewRootImpl.java:5881)
        at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3622)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.os.HandlerThread.run(HandlerThread.java:61)
        at com.android.server.ServiceThread.run(ServiceThread.java:46)
system_process W/ActivityManager: Activity destroy timeout for ActivityRecord{652a64e u0 org.doubango.ultimateAlpr/.AlprBenchmarkActivity t6 f}
system_process I/ActivityManager: Killing 5988:com.google.android.calendar/u0a33 (adj 906): empty #17
system_process D/ActivityManager: cleanUpApplicationRecord -- 5988
? W/art: Unexpected CPU variant for X86 using defaults: x86
system_process I/ActivityManager: Start proc 6569:com.google.android.gms.unstable/u0a14 for service com.google.android.gms/.droidguard.DroidGuardService
? E/art: Failed sending reply to debugger: Broken pipe
? I/art: Debugger is no longer active
? I/art: Starting a blocking GC Instrumentation
? W/System: ClassLoader referenced unknown path: /system/priv-app/PrebuiltGmsCore/lib/x86
? W/DynamiteModule: Local module descriptor class for providerinstaller not found.
? W/ProviderHelper: Unknown dynamite feature providerinstaller
? I/DynamiteModule: Considering local module providerinstaller:0 and remote module providerinstaller:0
? W/ProviderInstaller: Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
? W/System: ClassLoader referenced unknown path: /system/priv-app/PrebuiltGmsCore/lib/x86
? W/System: ClassLoader referenced unknown path: /system/priv-app/PrebuiltGmsCore/lib/x86
? V/NativeCrypto: Registering com/google/android/gms/org/conscrypt/NativeCrypto's 284 native methods...
? D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: false
? I/ProviderInstaller: Installed default security provider GmsCore_OpenSSL
? W/Primes: Primes not initialized, returning default (no-op) Primes instance which will ignore all calls. Please call Primes.initialize(...) before using any Primes API.
com.google.android.gms.persistent W/Conscrypt: Could not set socket write timeout: java.net.SocketException: Socket closed
com.google.android.gms.persistent W/Conscrypt:     at com.google.android.gms.org.conscrypt.Platform.setSocketWriteTimeout(:com.google.android.gms@[email protected] (040700-239467275):2)
com.google.android.gms.persistent W/Conscrypt:     at com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket.setSoWriteTimeout(:com.google.android.gms@[email protected] (040700-239467275):2)
? W/linker: /data/data/com.google.android.gms/app_dg_cache/8455A6C6BF0CD358952890D7F0BB63CB0BD757C5/the.apk!/libd4E775FB10426.so: unsupported flags DT_FLAGS_1=0x1001
com.google.android.gms.persistent I/Auth: [ReflectiveChannelBinder] Successfully bound channel!
com.google.android.gms.persistent W/Conscrypt: Could not set socket write timeout: java.net.SocketException: Socket closed
com.google.android.gms.persistent W/Conscrypt:     at com.google.android.gms.org.conscrypt.Platform.setSocketWriteTimeout(:com.google.android.gms@[email protected] (040700-239467275):2)
com.google.android.gms.persistent W/Conscrypt:     at com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket.setSoWriteTimeout(:com.google.android.gms@[email protected] (040700-239467275):2)
com.google.android.gms.persistent W/Conscrypt: Could not set socket write timeout: java.net.SocketException: Socket closed
com.google.android.gms.persistent W/Conscrypt:     at com.google.android.gms.org.conscrypt.Platform.setSocketWriteTimeout(:com.google.android.gms@[email protected] (040700-239467275):2)
com.google.android.gms.persistent W/Conscrypt:     at com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket.setSoWriteTimeout(:com.google.android.gms@[email protected] (040700-239467275):2)
com.google.android.gms.persistent W/Conscrypt: Could not set socket write timeout: java.net.SocketException: Socket closed
com.google.android.gms.persistent W/Conscrypt:     at com.google.android.gms.org.conscrypt.Platform.setSocketWriteTimeout(:com.google.android.gms@[email protected] (040700-239467275):2)
com.google.android.gms.persistent W/Conscrypt:     at com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket.setSoWriteTimeout(:com.google.android.gms@[email protected] (040700-239467275):2)
com.google.android.gms.persistent W/GLSUser: [AppCertManager] IOException while requesting key: 
    java.io.IOException: Invalid device key response.
        at hzz.a(:com.google.android.gms@[email protected] (040700-239467275):14)
        at hzz.a(:com.google.android.gms@[email protected] (040700-239467275):115)
        at hzx.a(:com.google.android.gms@[email protected] (040700-239467275):6)
        at hzt.a(:com.google.android.gms@[email protected] (040700-239467275))
        at hzs.a(:com.google.android.gms@[email protected] (040700-239467275):8)
        at com.google.android.gms.auth.account.be.legacy.AuthCronChimeraService.b(:com.google.android.gms@[email protected] (040700-239467275):6)
        at gyi.call(:com.google.android.gms@[email protected] (040700-239467275):3)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at rrt.b(:com.google.android.gms@[email protected] (040700-239467275):32)
        at rrt.run(:com.google.android.gms@[email protected] (040700-239467275):21)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at rxx.run(:com.google.android.gms@[email protected] (040700-239467275))
        at java.lang.Thread.run(Thread.java:761)
system_process I/ActivityManager: Killing 6307:com.google.android.talk/u0a53 (adj 906): empty #17
system_process D/ActivityManager: cleanUpApplicationRecord -- 6307
? W/ps: type=1400 audit(0.0:7644): avc: denied { getattr } for path="/proc/1" dev="proc" ino=4053 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:init:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7645): avc: denied { search } for name="1" dev="proc" ino=4053 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:init:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7646): avc: denied { search } for name="1" dev="proc" ino=4053 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:init:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7647): avc: denied { getattr } for path="/proc/2" dev="proc" ino=39043 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7648): avc: denied { search } for name="2" dev="proc" ino=39043 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7649): avc: denied { search } for name="2" dev="proc" ino=39043 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7650): avc: denied { getattr } for path="/proc/3" dev="proc" ino=39044 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7651): avc: denied { search } for name="3" dev="proc" ino=39044 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7652): avc: denied { search } for name="3" dev="proc" ino=39044 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7653): avc: denied { getattr } for path="/proc/5" dev="proc" ino=39046 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7654): avc: denied { search } for name="5" dev="proc" ino=39046 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7655): avc: denied { search } for name="5" dev="proc" ino=39046 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7656): avc: denied { getattr } for path="/proc/7" dev="proc" ino=39048 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7657): avc: denied { search } for name="7" dev="proc" ino=39048 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7658): avc: denied { search } for name="7" dev="proc" ino=39048 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7659): avc: denied { getattr } for path="/proc/8" dev="proc" ino=39049 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7660): avc: denied { search } for name="8" dev="proc" ino=39049 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7661): avc: denied { search } for name="8" dev="proc" ino=39049 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7662): avc: denied { getattr } for path="/proc/9" dev="proc" ino=39050 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0
? W/ps: type=1400 audit(0.0:7663): avc: denied { search } for name="9" dev="proc" ino=39050 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:kernel:s0 tclass=dir permissive=0

Raspberry QEMU arm emulator benchmark application error

I'm trying to run the Raspberry version on a QEMU Raspberry emulator, using latest image (2020-02-13-raspbian-buster-lite.img) and kernel (kernel-qemu-4.19.50-buster) l but i get this Illegal instruction error.

pi@raspberrypi:~/ultimateALPR-SDK/samples/c++/benchmark $ g++ benchmark.cxx -O3 -I../../../c++ -L../../../binaries/raspbian/armv7l -lultimate_alpr-sdk -o benchmark

pi@raspberrypi:~/ultimateALPR-SDK/samples/c++/benchmark $ LD_LIBRARY_PATH=../../../binaries/raspbian/armv7l:$LD_LIBRARY_PATH ./benchmark \
>     --positive ../../../assets/images/lic_us_1280x720.jpg \
>     --negative ../../../assets/images/london_traffic.jpg \
>     --assets ../../../assets \
>     --loops 100 \
>     --rate 0.2 \
>     --parallel true \
>     --rectify false
Illegal instruction
pi@raspberrypi:~ $ cat /proc/cpuinfo
processor       : 0
model name      : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 1099.36
Features        : half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : ARM-Versatile (Device Tree Support)
Revision        : 0000
Serial          : 0000000000000000

Is this problem expected on a emulator (it will only work on real RPis) or am i doing something wrong here?

Thanks

Last character is always a Asterisk

Hi. It is some error or it´s a Mask that you put in the code ?
I am trying to use your example, but the last plate character is always an "*"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.