海思3559上移植OpenCV3.4.1 (四)在3559A上的适配

修改的cmake 配置如下:

    cmake -D CMAKE_BUILD_TYPE=RELEASE  \
     -D CMAKE_INSTALL_PREFIX=../output  \
    -D  CMAKE_C_COMPILER=aarch64-himix100-linux-gcc \
    -D  CMAKE_CXX_COMPILER=aarch64-himix100-linux-g++ \
     -D BUILD_SHARED_LIBS=ON \
     -D BUILD_opencv_apps=OFF \
     -D BUILD_ZLIB=ON \
     -D BUILD_PNG=ON \
     -D BUILD_opencv_js=OFF \
     -D BUILD_TESTS=OFF \
     -D BUILD_ANDROID_EXAMPLES=OFF \
     -D BUILD_PACKAGE=OFF \
     -D BUILD_TESTS=OFF \
     -D BUILD_PERF_TESTS=OFF \
     -D ENABLE_PIC=TRUE \
     -D OpenCV_ARCH=AARCH64 \
    ..

关掉了一些不需要的东西
由于这个版本对64位ARM系统支持的不是很好,
需要修改一些代码,让代码可以运行起来。

修改一:

opencv-3.4.1/3rdparty/ittnotify/src/ittnotify/ittnotify_config.h


#ifdef __INTEL_COMPILER
#define __TBB_machine_fetchadd4(addr, val) __fetchadd4_acq((void *)addr, val)
#else  /* __INTEL_COMPILER */
/* TODO: Add Support for not Intel compilers for IA-64 architecture */
#define __TBB_machine_fetchadd4(addr, val) __sync_fetch_and_add(addr, val)

#endif /* __INTEL_COMPILER */

OpenCV ARM64位适配修改文件
分数好像是系统默认的,没法修改

修改二:

将opencv-3.4.1/3rdparty/libpng/arm/下的代码放到
opencv-3.4.1/3rdparty/libpng目录中,可以编译进去。

3559A 不进行任何代码优化的情况下,跑人脸识别可以在10ms以内

更新2019.04.18
在顶层增加Makefile

CUR_DIR      := $(shell pwd)

.PHONY:all prepare clean install
.PHONY:opencv_cmake opencv_make

all: clean prepare opencv_cmake opencv_make install


prepare:
	@mkdir -p $(CUR_DIR)/build
	@mkdir -p $(CUR_DIR)/output

opencv_cmake:
	@pushd build; \
	 cmake  -D CMAKE_BUILD_TYPE=RELEASE  \
			-D CMAKE_INSTALL_PREFIX=../output  \
			-D CMAKE_C_COMPILER=aarch64-himix100-linux-gcc \
			-D CMAKE_CXX_COMPILER=aarch64-himix100-linux-g++ \
			-D BUILD_SHARED_LIBS=ON \
			-D OPENCV_EXTRA_C_FLAGS=-fPIC  \
			-D BUILD_opencv_apps=OFF \
			-D BUILD_ZLIB=ON \
			-D BUILD_PNG=ON \
			-D BUILD_opencv_js=OFF \
			-D BUILD_TESTS=OFF \
			-D BUILD_ANDROID_EXAMPLES=OFF \
			-D BUILD_PACKAGE=OFF \
			-D BUILD_TESTS=OFF \
			-D BUILD_PERF_TESTS=OFF \
			-D ENABLE_PIC=TRUE \
			-D OpenCV_ARCH=AARCH64 \
			-D ZLIB_INCLUDE_DIR=$(CUR_DIR)/3rdparty/zlib \
			-D ZLIB_INCLUDE_DIRS=$(CUR_DIR)/3rdparty/zlib \
			..  \
		  ;popd

opencv_make:
	@pushd build;make -j16;popd

install:
	 @pushd build;make install;popd

clean:
	@rm -rf $(CUR_DIR)/build
	@rm -rf $(CUR_DIR)/output

你可能感兴趣的:(开源移植,海思平台(hisi))