一、移植到opencv
在官网下载opencv安卓版本
下载链接:Releases - OpenCV
选择Android
最好是选择最新版本,不然可能在编译链接的时候报以下错误:
我们需要把32位和64位so库以及头文件拷贝到系统源码中:
编写Android.mk:
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE = libopencv_java4
LOCAL_SRC_FILES_32 = armeabi-v7a/libopencv_java4.so
LOCAL_SRC_FILES_64 = arm64-v8a/libopencv_java4.so
LOCAL_MODULE_CLASS = SHARED_LIBRARIES
LOCAL_MODULE_TAGS := optional
LOCAL_VENDOR_MODULE := true
LOCAL_MODULE_SUFFIX = .so
#LOCAL_SHARED_LIBRARIES := libc libdl libjnigraphics liblog libm libz
LOCAL_MULTILIB := both
LOCAL_CHECK_ELF_FILES := false
LOCAL_LDFLAGS += -Wl,--exclude-libs,ALL
include $(BUILD_PREBUILT)
通过以上步骤,就可以把opencv移植到系统的vendor分区,最后我们用mmm命令编译:
二、引用opencv库
移植完成后,我们需要把opencv应用到camera hal中进行图像处理
找到对应的编译Android.mk并加上链接opencv库,这里在rk3588里面对应的camera hal编译文件是
hardware/rockchip/camera/Android.mk
加上链接:
@@ -295,7 +297,10 @@ LOCAL_SHARED_LIBRARIES:= \
libhardware \
libvpu \
libcamera_metadata \
- librga
+ librga \
+ libopencv_java4
编写我们的opencv图像处理方法,并且将opencv头文件包含到hal中:
最后在对应图像帧处理的地方加入我们的方法就可以了