opencv2.4.9在Hi3516A开发板上移植

时间:2021-02-25 06:37:56

opencv2.4.9下载不用说了。

Ubuntu12.04虚拟机安装的+arm-hisiv200-linux交叉编译器+cmake-gui(2.8.7)

参考:http://blog.csdn.net/luotuo44/article/details/8958990

http://blog.sina.com.cn/s/blog_92942dba0101d1wj.html

一、建立编译环境配置

进入opencv-2.4.9目录建立release-hisiv200目录存放编译过程中文件。

#cd opencv-2.4.9

#mkdir release-hisiv200

#cd release-hisiv200

打开cmake-gui,进行博客中的配置:#cmake-gui

在configure时选择CMAKE_SYSTEM_NAME:arm-hisiv200-linux

C:选择/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-gcc

C++:选择/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-g++

修改安装目录:CMAKE_INSTALL_PREFIX:/opt/2.4.9-arm-hisiv200

进行编译:make

二、出现问题:

1、/usr/lib/libImath.so:could not read symbols: File in wrong format

collect2: ld returned 1exit status

make[2]: ***[lib/libopencv_highgui.so] 错误 1

make[1]: ***[modules/highgui/CMakeFiles/opencv_highgui.dir/all] 错误 2

make: *** [all] 错误 2

主要opencv编译OPENEXR时要用到libImath.so,所有我就把那个取消了,然后编译就没出现过这个问题。

蓝色的部分不要选,还有下面这个也别选:

蓝色的部分不要选,还有下面这个也别选:

接在make:

2、LinkingCXX executable ../../bin/opencv_test_calib3d

../../lib/libopencv_core.so:undefined reference to `pthread_key_create'

../../lib/libopencv_core.so:undefined reference to `pthread_getspecific'

../../lib/libopencv_ts.so:undefined reference to `pthread_key_delete'

../../lib/libopencv_core.so:undefined reference to `pthread_once'

../../lib/libopencv_core.so:undefined reference to `clock_gettime'

../../lib/libopencv_core.so:undefined reference to `pthread_setspecific'

collect2: ld returned 1exit status

make[2]: ***[bin/opencv_test_calib3d] Error 1

make[1]: ***[modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/all] Error 2

make: *** [all] Error 2

  解决方案:修改release-hisiv200目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread-lrt,如下图:

3、../../lib/libopencv_ocl.so:undefinedreference to 'dlopen'

取消掉上面两个复选框。

接在编译。完成。

三、安装opencv库

#make install

在/opt/2.4.9-arm-hisiv200/目录下生成相应目录:

四、配置编译环境

如果没有安装pkgconfig则进行安装

参考http://blog.csdn.net/luotuo44/article/details/24836901

在/opt/2.4.9-arm-hisiv200/目录下建立pkgconfig目录,进入目录建立hisiv200-opencv.pc文件

#gedit hisiv200-opencv.pc

输入图中的内容。

编辑库连接配置文件

加入下面图中一行

配置PKG_CONFIG_PATH

#gedit /etc/bash.bashrc

最后一行加入上图PKG_CONFIG_PATH配置。

#source /etc/bash.bashrc

五、编译测试程序

测试程序picLike.cpp内容为:

问题:

将opencv库文件拷贝到/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/lib目录下

重新编译,问题解决。

六、在Hi3531上进行测试

1、因为hi3531空间不足,挂载程序运行。

#

2、配置环境变量

3、进入可执行程序目录执行程序

4、解决问题:从../../lib/libopencv_core.so建立了../../lib目录拷贝opencv库文件到此目录下,运行程序出现错误:Segmentation fault

5、将程序拷贝到相对于本来opencv库目录相对的目录下。

执行程序:

问题解决。