opencv2.4.9在Hi3531开发板上移植
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
opencv2.4.9下载不用说了。
Ubuntu12.04虚拟机安装的+arm-hisiv200-linux交叉编译器+cmake-gui(2.8.7)
参考:/luotuo44/article/details/8958990
/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 1 exit 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、Linking CXX 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 1 exit 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:undefined reference to 'dlopen'
取消掉上面两个复选框。
接在编译。完成。
三、安装opencv库
#make install
在/opt/2.4.9-arm-hisiv200/目录下生成相应目录:
四、配置编译环境
如果没有安装pkgconfig则进行安装
参考/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库目录相对的目录下。
执行程序: