OpenCV4Android(安卓)不需要安装OpenCVManager,就可以运行的方法
http://blog.csdn.net/yanzi1225627/article/details/27863615
OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰)
根据上文中的方法。使用OpenCV3.0.0
Android.mk文件为:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)OpenCV_INSTALL_MODULES:=onOPENCV_CAMERA_MODULES:=offOPENCV_LIB_TYPE:=STATIC //静态没有成功,改为SHARED可以ifeq ("$(wildcard $(OPENCV_MK_PATH))","")include /home/myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk //为了编译依赖OpenCV的soelse include $(OPENCV_MK_PATH) endif LOCAL_MODULE := TestOpenCV //生成so的名LOCAL_SRC_FILES := jni_part.cpp //jni下的cpp文件名LOCAL_LDLIBS += -lm -llog include $(BUILD_SHARED_LIBRARY)
出现以下几种形式的错误
(1)OPENCV_LIB_TYPE:=STATIC 报了以下一堆错误
:~/workspace/TestOpenCV$ ndk-buildCompile++ thumb : TestOpenCV <= jni_part.cppSharedLibrary : libTestOpenCV.soInstall : libTestOpenCV.so => libs/armeabi-v7a/libTestOpenCV.solenovo-myc@lenovomyc-Lenovo-Product:~/workspace/TestOpenCV$ ndk-buildInstall : libTestOpenCV.so => libs/armeabi-v7a/libTestOpenCV.solenovo-myc@lenovomyc-Lenovo-Product:~/workspace/TestOpenCV$ ndk-buildInstall : libTestOpenCV.so => libs/armeabi-v7a/libTestOpenCV.solenovo-myc@lenovomyc-Lenovo-Product:~/workspace/TestOpenCV$ ndk-buildCompile++ thumb : TestOpenCV <= jni_part.cppPrebuilt : libgnustl_static.a <= <NDK>/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/SharedLibrary : libTestOpenCV.soInstall : libTestOpenCV.so => libs/armeabi-v7a/libTestOpenCV.solenovo-myc@lenovomyc-Lenovo-Product:~/workspace/TestOpenCV$ ndk-buildCompile++ thumb : TestOpenCV <= jni_part.cppPrebuilt : libopencv_shape.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_stitching.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_objdetect.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_superres.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_ts.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_videostab.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_calib3d.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_features2d.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_highgui.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_videoio.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_imgcodecs.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_androidcamera.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_video.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_photo.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_ml.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_imgproc.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_flann.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_core.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : libopencv_hal.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../libs/armeabi-v7a/Prebuilt : liblibjpeg.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/Prebuilt : liblibwebp.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/Prebuilt : liblibpng.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/Prebuilt : liblibtiff.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/Prebuilt : liblibjasper.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/Prebuilt : libIlmImf.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/Prebuilt : libtbb.a <= /home/lenovo-myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/jni/../3rdparty/libs/armeabi-v7a/SharedLibrary : libTestOpenCV.so/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_features2d.a(fast.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_features2d.a(fast_score.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_features2d.a(feature2d.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_features2d.a(keypoint.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_features2d.a(opencl_kernels_features2d.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_imgproc.a(color.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_imgproc.a(demosaicing.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_imgproc.a(drawing.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_imgproc.a(hershey_fonts.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_imgproc.a(tables.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(algorithm.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(alloc.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(convert.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(copy.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(datastructs.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(mathfuncs.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(matrix.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(ocl.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(opengl.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(parallel.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(stat.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(stl.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(system.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(umatrix.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(arithm.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(array.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(cuda_gpu_mat.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(cuda_host_mem.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(cuda_stream.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(kmeans.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(lapack.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(matmul.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(matop.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(pca.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(rand.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_core.a(tables.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_hal.a(mathfuncs.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_hal.a(matrix.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libopencv_hal.a(stat.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(governor.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(market.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(private_server.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(scheduler.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(task.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(task_group_context.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(tbb_main.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(tbb_misc.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(rml_tbb.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(arena.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(cache_aligned_allocator.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(dynamic_link.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(observer_proxy.cpp.o): Unknown EABI object attribute 34/home/lenovo-myc/android_developer_tools/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: Warning: ./obj/local/armeabi-v7a/libtbb.a(spin_rw_mutex.cpp.o): Unknown EABI object attribute 34./obj/local/armeabi-v7a/libopencv_core.a(ocl.cpp.o): In function `cv::ocl::Kernel::set(int, cv::ocl::Image2D const&)':ocl.cpp:(.text._ZN2cv3ocl6Kernel3setEiRKNS0_7Image2DE+0x28): undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'./obj/local/armeabi-v7a/libopencv_core.a(ocl.cpp.o): In function `cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::_checkSizeOfReservedEntries()':ocl.cpp:(.text._ZN2cv3ocl24OpenCLBufferPoolBaseImplINS0_20OpenCLBufferPoolImplENS0_13CLBufferEntryEP7_cl_memE27_checkSizeOfReservedEntriesEv[cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::_checkSizeOfReservedEntries()]+0x22): undefined reference to `std::__detail::_List_node_base::_M_unhook()'./obj/local/armeabi-v7a/libopencv_core.a(ocl.cpp.o): In function `cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::setMaxReservedSize(unsigned int)':ocl.cpp:(.text._ZN2cv3ocl24OpenCLBufferPoolBaseImplINS0_20OpenCLBufferPoolImplENS0_13CLBufferEntryEP7_cl_memE18setMaxReservedSizeEj[cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::setMaxReservedSize(unsigned int)]+0x46): undefined reference to `std::__detail::_List_node_base::_M_unhook()'./obj/local/armeabi-v7a/libopencv_core.a(ocl.cpp.o): In function `cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::release(_cl_mem*)':ocl.cpp:(.text._ZN2cv3ocl24OpenCLBufferPoolBaseImplINS0_20OpenCLBufferPoolImplENS0_13CLBufferEntryEP7_cl_memE7releaseES5_[cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::release(_cl_mem*)]+0x40): undefined reference to `std::__detail::_List_node_base::_M_unhook()'ocl.cpp:(.text._ZN2cv3ocl24OpenCLBufferPoolBaseImplINS0_20OpenCLBufferPoolImplENS0_13CLBufferEntryEP7_cl_memE7releaseES5_[cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::release(_cl_mem*)]+0xe4): undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'./obj/local/armeabi-v7a/libopencv_core.a(ocl.cpp.o): In function `cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::_findAndRemoveEntryFromReservedList(cv::ocl::CLBufferEntry&, unsigned int)':ocl.cpp:(.text._ZN2cv3ocl24OpenCLBufferPoolBaseImplINS0_20OpenCLBufferPoolImplENS0_13CLBufferEntryEP7_cl_memE35_findAndRemoveEntryFromReservedListERS3_j[cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::_findAndRemoveEntryFromReservedList(cv::ocl::CLBufferEntry&, unsigned int)]+0x54): undefined reference to `std::__detail::_List_node_base::_M_unhook()'ocl.cpp:(.text._ZN2cv3ocl24OpenCLBufferPoolBaseImplINS0_20OpenCLBufferPoolImplENS0_13CLBufferEntryEP7_cl_memE35_findAndRemoveEntryFromReservedListERS3_j[cv::ocl::OpenCLBufferPoolBaseImpl<cv::ocl::OpenCLBufferPoolImpl, cv::ocl::CLBufferEntry, _cl_mem*>::_findAndRemoveEntryFromReservedList(cv::ocl::CLBufferEntry&, unsigned int)]+0x8e): undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'./obj/local/armeabi-v7a/libopencv_core.a(ocl.cpp.o): In function `cv::ocl::OpenCLBufferPoolImpl::_allocateBufferEntry(cv::ocl::CLBufferEntry&, unsigned int)':ocl.cpp:(.text._ZN2cv3ocl20OpenCLBufferPoolImpl20_allocateBufferEntryERNS0_13CLBufferEntryEj[cv::ocl::OpenCLBufferPoolImpl::_allocateBufferEntry(cv::ocl::CLBufferEntry&, unsigned int)]+0x8a): undefined reference to `std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'collect2: ld returned 1 exit statusmake: *** [obj/local/armeabi-v7a/libTestOpenCV.so] Error 1ndk-build错误
没解决
(2)改为 OPENCV_LIB_TYPE:=SHARED之后。编译通过。工程下生成 libs 和 obj目录下的文件
(3)修改Activity文件如下:
package com.example.testopencv;import org.opencv.android.BaseLoaderCallback;import org.opencv.android.LoaderCallbackInterface;import org.opencv.android.OpenCVLoader;import org.opencv.android.Utils;import org.opencv.core.Mat;import org.opencv.imgproc.Imgproc;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.support.v4.app.Fragment;import android.support.v7.app.ActionBarActivity;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.ImageView;/** * 图像灰度化demo * * @author myc * */public class NoManagerOpenCVActivity extends Activity{ Button btnProcess; Bitmap srcBitmap; Bitmap grayBitmap; ImageView imgHuaishi; private static boolean flag = true; private boolean isFirst = true; private static final String TAG = "NoManagerActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); initUI(); btnProcess.setOnClickListener(new ProcessClickListener()); } // OpenCV库加载并初始化成功后的回调函数 private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { // TODO Auto-generated method stub switch (status) { case BaseLoaderCallback.SUCCESS: Log.i(TAG, "成功加载"); break; default: super.onManagerConnected(status); Log.i(TAG, "加载失败"); break; } } }; public void initUI() { btnProcess = (Button) findViewById(R.id.btn_gray_process); imgHuaishi = (ImageView) findViewById(R.id.img_huaishi); Log.i(TAG, "initUI sucess..."); } public void procSrc2Gray() { Mat rgbMat = new Mat(); Mat grayMat = new Mat(); srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.nanhuaijin); grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Config.RGB_565); Utils.bitmapToMat(srcBitmap, rgbMat);// convert original bitmap to Mat, // R G B. Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);// rgbMat to // gray // grayMat Utils.matToBitmap(grayMat, grayBitmap); // convert mat to bitmap Log.i(TAG, "procSrc2Gray sucess..."); } private class ProcessClickListener implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub if (isFirst) { procSrc2Gray(); isFirst = false; } if (flag) { imgHuaishi.setImageBitmap(grayBitmap); btnProcess.setText("查看原图"); flag = false; } else { imgHuaishi.setImageBitmap(srcBitmap); btnProcess.setText("灰度化"); flag = true; } } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); } public native void FindFeatures(long matAddrGr, long matAddrRgba);}
将OpenCVLoader.initAsync 这句注释掉,因为这句是使用OpenCVManager的。
修改为加载刚生成的库 System.loadLibrary("TestOpenCV");
(4)需要将 /home/myc/Documents/sdk/openCV/OpenCV-android-sdk/sdk/native/libs/armeabi-v7a/opencv_java.so 拷到libs路径下
(和LibTestOpenCV.so一起)。如果没有拷过来,会报如下错误:
06-04 16:08:47.956: I/NoManagerActivity(5497): initUI sucess...06-04 16:08:47.956: I/NoManagerActivity(5497): OpenCV library load!06-04 16:08:47.956: D/OpenCV/StaticHelper(5497): Trying to get library list06-04 16:08:47.966: E/OpenCV/StaticHelper(5497): OpenCV error: Cannot load info library for OpenCV06-04 16:08:47.966: D/OpenCV/StaticHelper(5497): Library list: ""06-04 16:08:47.966: D/OpenCV/StaticHelper(5497): First attempt to load libs06-04 16:08:47.966: D/OpenCV/StaticHelper(5497): Trying to init OpenCV libs06-04 16:08:47.966: D/OpenCV/StaticHelper(5497): Trying to load library opencv_java06-04 16:08:47.966: D/OpenCV/StaticHelper(5497): Cannot load library "opencv_java"06-04 16:08:47.966: W/System.err(5497): java.lang.UnsatisfiedLinkError: Couldn't load opencv_java from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.testopencv-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.testopencv-1, /vendor/lib, /system/lib]]]: findLibrary returned null06-04 16:08:47.966: W/System.err(5497): at java.lang.Runtime.loadLibrary(Runtime.java:355)06-04 16:08:47.966: W/System.err(5497): at java.lang.System.loadLibrary(System.java:525)06-04 16:08:47.966: W/System.err(5497): at org.opencv.android.StaticHelper.loadLibrary(StaticHelper.java:64)06-04 16:08:47.966: W/System.err(5497): at org.opencv.android.StaticHelper.initOpenCVLibs(StaticHelper.java:95)06-04 16:08:47.966: W/System.err(5497): at org.opencv.android.StaticHelper.initOpenCV(StaticHelper.java:39)06-04 16:08:47.966: W/System.err(5497): at org.opencv.android.OpenCVLoader.initDebug(OpenCVLoader.java:72)06-04 16:08:47.966: W/System.err(5497): at com.example.testopencv.NoManagerActivity.onResume(NoManagerActivity.java:127)06-04 16:08:47.966: W/System.err(5497): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)06-04 16:08:47.966: W/System.err(5497): at android.app.Activity.performResume(Activity.java:5211)06-04 16:08:47.966: W/System.err(5497): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2803)06-04 16:08:47.966: W/System.err(5497): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2842)06-04 16:08:47.966: W/System.err(5497): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2289)06-04 16:08:47.966: W/System.err(5497): at android.app.ActivityThread.access$600(ActivityThread.java:159)06-04 16:08:47.966: W/System.err(5497): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1274)06-04 16:08:47.966: W/System.err(5497): at android.os.Handler.dispatchMessage(Handler.java:99)06-04 16:08:47.966: W/System.err(5497): at android.os.Looper.loop(Looper.java:137)06-04 16:08:47.966: W/System.err(5497): at android.app.ActivityThread.main(ActivityThread.java:5179)06-04 16:08:47.966: W/System.err(5497): at java.lang.reflect.Method.invokeNative(Native Method)06-04 16:08:47.966: W/System.err(5497): at java.lang.reflect.Method.invoke(Method.java:525)06-04 16:08:47.966: W/System.err(5497): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)06-04 16:08:47.966: W/System.err(5497): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)06-04 16:08:47.966: W/System.err(5497): at dalvik.system.NativeStart.main(Native Method)06-04 16:08:47.966: D/OpenCV/StaticHelper(5497): First attempt to load libs fails06-04 16:08:47.966: I/NoManagerActivity(5497): OpenCV load not successfully缺少Libopencv_java.so报错
注:在OpenCV Library - 3.0.0-rc1 工程的StaticHelper.java 中有如下代码:
// If dependencies list is not defined or empty.
result &= loadLibrary("opencv_java");
即在OpenCVLoader初始化过程中,dependencies list 未定义或者为空的情况下,都会默认加载Libopencv_java.so
因此即使Activity中 System.loadLibrary("opencv_java"); 这句被注释掉,还是会报错。
(5)下边这个错调了半天,发现将System.loadLibrary("TestOpenCV");写成了 System.loadLibrary("LibTestOpenCV");
应该和 LOCAL_MODULE := TestOpenCV 一致
06-04 15:58:56.206: I/NoManagerActivity(3993): initUI sucess...06-04 15:58:56.206: I/NoManagerActivity(3993): OpenCV library load!06-04 15:58:56.206: D/dalvikvm(3993): Trying to load lib /data/app-lib/com.example.testopencv-1/libopencv_java.so 0x41f4ae8006-04 15:58:56.236: D/dalvikvm(3993): Added shared lib /data/app-lib/com.example.testopencv-1/libopencv_java.so 0x41f4ae8006-04 15:58:56.236: I/NoManagerActivity(3993): start loading libTestOpenCV06-04 15:58:56.236: D/AndroidRuntime(3993): Shutting down VM06-04 15:58:56.236: W/dalvikvm(3993): threadid=1: thread exiting with uncaught exception (group=0x415a9898)06-04 15:58:56.236: E/AndroidRuntime(3993): FATAL EXCEPTION: main06-04 15:58:56.236: E/AndroidRuntime(3993): java.lang.UnsatisfiedLinkError: Couldn't load libTestOpenCV from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.testopencv-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.testopencv-1, /vendor/lib, /system/lib]]]: findLibrary returned null06-04 15:58:56.236: E/AndroidRuntime(3993): at java.lang.Runtime.loadLibrary(Runtime.java:355)06-04 15:58:56.236: E/AndroidRuntime(3993): at java.lang.System.loadLibrary(System.java:525)06-04 15:58:56.236: E/AndroidRuntime(3993): at com.example.testopencv.NoManagerActivity.onResume(NoManagerActivity.java:132)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.app.Activity.performResume(Activity.java:5211)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2803)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2842)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2289)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.app.ActivityThread.access$600(ActivityThread.java:159)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1274)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.os.Handler.dispatchMessage(Handler.java:99)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.os.Looper.loop(Looper.java:137)06-04 15:58:56.236: E/AndroidRuntime(3993): at android.app.ActivityThread.main(ActivityThread.java:5179)06-04 15:58:56.236: E/AndroidRuntime(3993): at java.lang.reflect.Method.invokeNative(Native Method)06-04 15:58:56.236: E/AndroidRuntime(3993): at java.lang.reflect.Method.invoke(Method.java:525)06-04 15:58:56.236: E/AndroidRuntime(3993): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)06-04 15:58:56.236: E/AndroidRuntime(3993): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:610)06-04 15:58:56.236: E/AndroidRuntime(3993): at dalvik.system.NativeStart.main(Native Method)so名错误
(6)成功的log
06-04 16:01:22.966: I/NoManagerActivity(4301): initUI sucess...06-04 16:01:22.966: I/NoManagerActivity(4301): OpenCV library load!06-04 16:01:22.966: D/OpenCV/StaticHelper(4301): Trying to get library list06-04 16:01:22.966: E/OpenCV/StaticHelper(4301): OpenCV error: Cannot load info library for OpenCV06-04 16:01:22.966: D/OpenCV/StaticHelper(4301): Library list: ""06-04 16:01:22.966: D/OpenCV/StaticHelper(4301): First attempt to load libs06-04 16:01:22.966: D/OpenCV/StaticHelper(4301): Trying to init OpenCV libs06-04 16:01:22.966: D/OpenCV/StaticHelper(4301): Trying to load library opencv_java06-04 16:01:22.966: D/dalvikvm(4301): Trying to load lib /data/app-lib/com.example.testopencv-1/libopencv_java.so 0x41f4c9f806-04 16:01:22.996: D/dalvikvm(4301): Added shared lib /data/app-lib/com.example.testopencv-1/libopencv_java.so 0x41f4c9f806-04 16:01:22.996: D/OpenCV/StaticHelper(4301): Library opencv_java loaded06-04 16:01:22.996: D/OpenCV/StaticHelper(4301): First attempt to load libs is OK06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): General configuration for OpenCV 3.0.0-rc1 =====================================06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): Version control: 3.0.0-rc106-04 16:01:22.996: I/OpenCV/StaticHelper(4301): Platform:06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): Host: Darwin 13.2.0 i38606-04 16:01:22.996: I/OpenCV/StaticHelper(4301): Target: Linux 1 armv7-a06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): CMake: 2.8.12.206-04 16:01:22.996: I/OpenCV/StaticHelper(4301): CMake generator: Ninja06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): CMake build tool: /usr/local/bin/ninja06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): Configuration: Release06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): C/C++:06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): Built as dynamic libs?: NO06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): C++ Compiler: /opt/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ (ver 4.7)06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): C++ flags (Release): -fexceptions -frtti -fpic -Wno-psabi --sysroot=/opt/android/android-ndk-r8e/platforms/android-8/arch-arm -funwind-tables -finline-limit=64 -fsigned-char -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fdata-sections -ffunction-sections -Wa,--noexecstack -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -fomit-frame-pointer -fvisibility=hidden -fvisibility-inlines-hidden -mthumb -fomit-frame-pointer -fno-strict-aliasing -O3 -DNDEBUG -DNDEBUG06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): C++ flags (Debug): -fexceptions -frtti -fpic -Wno-psabi --sysroot=/opt/android/android-ndk-r8e/platforms/android-8/arch-arm -funwind-tables -finline-limit=64 -fsigned-char -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fdata-sections -ffunction-sections -Wa,--noexecstack -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -fomit-frame-pointer -fvisibility=hidden -fvisibility-inlines-hidden -marm -fno-omit-frame-pointer -fno-strict-aliasing -O0 -g -DDEBUG -D_DEBUG -O0 -DDEBUG -D_DEBUG06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): C Compiler: /opt/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.7/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): C flags (Release): -fexceptions -fpic -Wno-psabi --sysroot=/opt/android/android-ndk-r8e/platforms/android-8/arch-arm -funwind-tables -finline-limit=64 -fsigned-char -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fdata-sections -ffunction-sections -Wa,--noexecstack -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -fomit-frame-pointer -fvisibility=hidden -mthumb -fomit-frame-pointer -fno-strict-aliasing -O3 -DNDEBUG -DNDEBUG06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): C flags (Debug): -fexceptions -fpic -Wno-psabi --sysroot=/opt/android/android-ndk-r8e/platforms/android-8/arch-arm -funwind-tables -finline-limit=64 -fsigned-char -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fdata-sections -ffunction-sections -Wa,--noexecstack -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -fomit-frame-pointer -fvisibility=hidden -marm -fno-omit-frame-pointer -fno-strict-aliasing -O0 -g -DDEBUG -D_DEBUG -O0 -DDEBUG -D_DEBUG06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): Linker flags (Release): -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now 06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): Linker flags (Debug): -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now 06-04 16:01:22.996: I/OpenCV/StaticHelper(4301): Precompiled headers: YES06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): OpenCV modules:06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): To be built: hal core flann imgproc ml photo video androidcamera imgcodecs shape videoio highgui objdetect superres ts features2d calib3d java stitching videostab06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Disabled: world06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Disabled by dependency: -06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Unavailable: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev python2 viz06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Android: 06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Android ABI: armeabi-v7a06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): STL type: gnustl_static06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Native API level: android-806-04 16:01:23.006: I/OpenCV/StaticHelper(4301): SDK target: android-1406-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Android NDK: /opt/android/android-ndk-r8e (toolchain: arm-linux-androideabi-4.7)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): android tool: /opt/android/android-sdk-macosx/tools/android (Android SDK Tools, revision 24.1.2.)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Google Play package: YES06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Android examples: YES06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): GUI: 06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): GTK+: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): GThread : NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): GtkGlExt: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): OpenGL support: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): VTK support: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Media I/O: 06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): ZLib: z (ver 1.2.3)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): JPEG: build (ver 90)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): WEBP: build (ver 0.3.1)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): PNG: build (ver 1.5.12)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): TIFF: build (ver 42 - 4.0.2)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): JPEG 2000: build (ver 1.900.1)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): OpenEXR: build (ver 1.7.1)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): GDAL: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Video I/O:06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): AndroidNativeCamera: YES, use prebuilt libraries06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Other third-party libraries:06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Use IPP: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Use Eigen: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Use TBB: YES (ver 4.1 interface 6102)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Use OpenMP: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Use GCD NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Use Concurrency NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Use C=: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Use Cuda: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Use OpenCL: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Python 2:06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Interpreter: /usr/bin/python2.7 (ver 2.7.5)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Python 3:06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Interpreter: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Python (for build): /usr/bin/python2.706-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Java:06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): ant: /usr/local/bin/ant (ver 1.9.4)06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Java wrappers: YES06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Java tests: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Matlab:06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): mex: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Documentation:06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Doxygen: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): PlantUML: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Tests and samples:06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Tests: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Performance tests: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): C/C++ Examples: NO06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): Install path: /builds/master_pack-android/build/o4a/install06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): cvconfig.h is in: /builds/master_pack-android/build/o4a06-04 16:01:23.006: I/OpenCV/StaticHelper(4301): -----------------------------------------------------------------06-04 16:01:23.006: D/dalvikvm(4301): Trying to load lib /data/app-lib/com.example.testopencv-1/libopencv_java.so 0x41f4c9f806-04 16:01:23.006: D/dalvikvm(4301): Shared lib '/data/app-lib/com.example.testopencv-1/libopencv_java.so' already loaded in same CL 0x41f4c9f806-04 16:01:23.006: I/NoManagerActivity(4301): start loading libTestOpenCV06-04 16:01:23.006: D/dalvikvm(4301): Trying to load lib /data/app-lib/com.example.testopencv-1/libTestOpenCV.so 0x41f4c9f806-04 16:01:23.006: D/dalvikvm(4301): Added shared lib /data/app-lib/com.example.testopencv-1/libTestOpenCV.so 0x41f4c9f806-04 16:01:23.006: D/dalvikvm(4301): No JNI_OnLoad found in /data/app-lib/com.example.testopencv-1/libTestOpenCV.so 0x41f4c9f8, skipping init06-04 16:01:23.006: I/NoManagerActivity(4301): finish loading libTestOpenCV06-04 16:01:23.006: I/NoManagerActivity(4301): 成功加载06-04 16:01:23.046: D/libEGL(4301): loaded /vendor/lib/egl/libEGL_adreno.so06-04 16:01:23.046: D/libEGL(4301): loaded /vendor/lib/egl/libGLESv1_CM_adreno.so06-04 16:01:23.056: D/libEGL(4301): loaded /vendor/lib/egl/libGLESv2_adreno.so06-04 16:01:23.056: I/Adreno-EGL(4301): <qeglDrvAPI_eglInitialize:381>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_3.2.1.4_RB1.04.03.00.187.021_msm8226_JB_3.2.1.4_RB1__release_AU ()06-04 16:01:23.056: I/Adreno-EGL(4301): OpenGL ES Shader Compiler Version: 20.00.0306-04 16:01:23.056: I/Adreno-EGL(4301): Build Date: 07/11/14 Fri06-04 16:01:23.056: I/Adreno-EGL(4301): Local Branch: mybranch381046706-04 16:01:23.056: I/Adreno-EGL(4301): Remote Branch: quic/jb_3.2.1.4_rb106-04 16:01:23.056: I/Adreno-EGL(4301): Local Patches: NONE06-04 16:01:23.056: I/Adreno-EGL(4301): Reconstruct Branch: AU_LINUX_ANDROID_JB_3.2.1.4_RB1.04.03.00.187.021 + NOTHING06-04 16:01:23.086: D/OpenGLRenderer(4301): Enabling debug mode 0成功的Log
(7)当把
Log.i(TAG,"OpenCV library load!"); if (!OpenCVLoader.initDebug()) { Log.i(TAG,"OpenCV load not successfully");// OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); } else {// System.loadLibrary("opencv_java"); Log.i(TAG,"start loading libTestOpenCV"); System.loadLibrary("TestOpenCV");// load other libraries Log.i(TAG,"finish loading libTestOpenCV"); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); }
修改为
Log.i(TAG,"OpenCV library load!"); System.loadLibrary("opencv_java"); Log.i(TAG,"start loading libTestOpenCV"); System.loadLibrary("TestOpenCV");// load other libraries Log.i(TAG,"finish loading libTestOpenCV"); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
即跳过 OpenCVLoader.initDebug()过程,打出的log如下:
06-04 15:59:58.616: I/NoManagerActivity(4126): initUI sucess...06-04 15:59:58.616: I/NoManagerActivity(4126): OpenCV library load!06-04 15:59:58.616: D/dalvikvm(4126): Trying to load lib /data/app-lib/com.example.testopencv-2/libopencv_java.so 0x41f4b64006-04 15:59:58.616: D/dalvikvm(4126): Shared lib '/data/app-lib/com.example.testopencv-2/libopencv_java.so' already loaded in same CL 0x41f4b64006-04 15:59:58.616: I/NoManagerActivity(4126): start loading libTestOpenCV06-04 15:59:58.616: D/dalvikvm(4126): Trying to load lib /data/app-lib/com.example.testopencv-2/libTestOpenCV.so 0x41f4b64006-04 15:59:58.616: D/dalvikvm(4126): Shared lib '/data/app-lib/com.example.testopencv-2/libTestOpenCV.so' already loaded in same CL 0x41f4b64006-04 15:59:58.616: I/NoManagerActivity(4126): finish loading libTestOpenCV06-04 15:59:58.616: I/NoManagerActivity(4126): 成功加载
Log少了很多(仅为测试)
(8)调试中发现,官方给的Sample中。只用java层接口,没用jni层的例子。比如 OpenCV Sample - image-manipulations
只需要拷进去一个Libopencv_java.so,然后注释掉onResume函数中的initAsync这句。不用OpenCVManager就可以运行了
(怀疑如果功能增多需要拷进去其他so)
@Override public void onResume() { super.onResume(); if (!OpenCVLoader.initDebug()) { Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");// OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); } else { Log.d(TAG, "OpenCV library found inside package. Using it!"); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } }
更多相关文章
- 解决android SDK下载相关工具连接失败问题-Failed to fetch
- Unable to instantiate application + ClassNotFoundException的
- android error: Apostrophe not preceded
- android WebViewClient和WebChromeClient
- android 加载图片并在上面画图
- Android(安卓)jcenter bad gateway 502(Unable to load Maven met
- Android(安卓)Studio 出现Error:Connection timed out: connect.
- android java.lang.IllegalArgumentException contains a path s
- Android常见的几种RuntimeException