加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

OpenCV在Hisi上的移植概括

发布时间:2021-12-10 21:47:15 所属栏目:教程 来源:互联网
导读:经本人尝试opencv2.4.9在arm-hisiv200-linux-g++ 可以编译通过,在arm-hisiv100-linux-g++ 下编译会出现错误。本文分别介绍在arm-hisiv200-linux-g++ 和arm-hisiv100-linux-g++ 下opencv的编译方式。 一、arm-hisiv200-linux-g++交叉编译链 Ubuntu12.04 OpenC
经本人尝试opencv2.4.9在arm-hisiv200-linux-g++ 可以编译通过,在arm-hisiv100-linux-g++ 下编译会出现错误。本文分别介绍在arm-hisiv200-linux-g++ 和arm-hisiv100-linux-g++ 下opencv的编译方式。
 
一、arm-hisiv200-linux-g++交叉编译链
 
Ubuntu12.04
 
OpenCV-2.4.9
 
1、在/home下新建文件夹
 
# mkdir opencv249
 
把下载的OpenCV-2.4.9.tar.bz2解压到/home/opencv 目录下
 
2、然后在home/opencv  新建一个 hisiv200-build 文件夹,作为CMake编译hisi版本的工作目录
 
# mkdir hisiv200-build
 
3、在终端里调出CMake gui界面:
 
# cmake-gui
 
(1)在configure时选择
 
CMAKE_SYSTEM_NAME:hisiv-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
 
(2)  opencv编译OPENEXR时要用到libImath.so,
 
在配置界面要把build_opencvxr和with_opencvxr去掉,否则会出现这个问题。
 
/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
 
还要去掉build_opencv_ocl和with_opencl,否则会出下面的错误
 
../../lib/libopencv_ocl.so:undefined reference to 'dlopen'
 
还要去掉tiff库的编译
 
(3)修改默认安装路径,默认安装目录为/usr/local,但我想对它统一归类,所以我在opt/目录下新建了一个opencv249文件夹,在Cmake-gui里修改CMAKE_INSTALL_PREFIX变量改为/opt/opencv249/hisi
 
(4)修改hisiv200_build目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt
 
主要
 
opencv
 
编译
 
OPENEXR
 
时要用到
 
libImath.so
 
,所有我就把那个取消了,然后编译就没出现过这个问题
 
4、进行编译:make
 
5、make install
 
这样就移植完成
 
二、arm-hisiv100-linux-g++交叉编译链
 
Ubuntu10.04
 
OpenCV-2.4.2
 
步骤与上述一致。
 
三、配置编译环境
 
1、进入/opt/opencv249/hisi目录下,建立pkgconfig目录,进入目录建立hisiv200-opencv249.pc文件 #gedit hisiv200-opencv249.pc
 
2、编辑库连接配置文件
 
#gedit /etc/ld.so.conf.d/hisiv200-opencv249.conf
 
输入/opt/opencv249/hisi/lib
 
然后启用配置sudo ldconfig
 
3、配置PKG_CONFIG_PATH
 
#gedit /etc/bash.bashrc
 
在文档最后加入export PKG_CONFIG_PATH=/opt/opencv249/hisi/lib:$PKG_CONFIG_PATH
 
4、测试#pkg-config --libs --cflags hisiv200-opencv249
 
会显示相应的头文件和库即可
 
四、编译程序
 
注意:embedded linux不支持OpenCV自己的Highgui,所以不能在目标板上使用cvNameWidow(),cvWaitKey(),cvShowImage()等显示函数,但是可以利用里面的cvLoad()等函数。
 
本人写了一个脚本文件,与要编译的文件放在同一目录下,直接./ ******,就可以编译C和C++源文件
 
注意:要在该脚本文件中加上-static。否则在hisi上无法运行。
 
如果出现cv异常之类的错误,就是使用了cvNameWidow(),cvWaitKey(),cvShowImage()等显示函数

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读