HI3559A上交叉编译opencv4.1.0配置代码环境

使用之前的的opencv源码(opencv+opencv_contrib),解压在一个文件夹下面,opencv下mkdir build。
进入build 运行cmake-gui(编译linux上的时候使用的是cmake -D …直接编译,cmake-gui是一个图形界面配置编译选项)。
这个直接查看网上教程,要建立自己的安装目录便于后续使用还可以与linux上的opencv库分开,之前直接换编译工具但是还是使用的linux编译出来的库文件(.a/.so)会报错。linux编译出的是x86的,不能在arm板子上直接使用。
configure里面有一个share什么的选了就是编译动态库.so文件,程序写好了要把库文件拷贝到板子的根文件里面。拷贝完后,板子上要设置一下:
1、打开路径

cd /etc/ld.so.conf.d

1

2、创建文件

touch OpenCV.conf

1

3、 在OpenCV.conf中写入 :

/usr/local/lib

1

注:该路径为opencv install之后的路径,一般默认的路径为/usr/local/lib,即lib*.so库文件所在的路径。
4、在终端执行命令

ldconfig

一直按configure直到上面没有红色为止,然后greate还是generation忘了。之后进入build目录下make -j4,再make install。
具体过程参见第二步 安装,有图解。
https://blog.csdn.net/ycdhqzhiai/article/details/8476016

这个交叉编译比直接在linux编译麻烦,会出很多错。有一个3194什么的去掉勾,加上会报错我也不知道干嘛的。其次是会没有zlib.h,网上查看,有两个解决办法,一是在顶层的CMakeLists.txt里面找到 ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
不一定在多少行,在这句下一行加上
ocv_include_directories(./3rdparty/zlib/)
另一种是则找到 3rdparty/libpng/CMakeLists.txt
在ocv_include_directories 前面添加 set(ZLIB_INCLUDE_DIRS “/路径/opencv/git_opencv/opencv/3rdparty/zlib/”)
两种方法不知道是哪一种生效了,都改了就没毛病了。

之后会遇到某个参数没有定义,libopencv_imgcodecs.so.4.1.0:对‘png_init_filter_functions_neon’未定义的引用后面还有几个这个库未定义;libopencv_imgcodecs.so.4.1.0:对‘png_riffle_palette_rgba’未定义的引用
网上也是两种方法,:
进入到3rdparty/libpng,在CMakeLists.txt最顶端增加:

set(ENABLE_NEON ON)
好像对我没作用
二:修改
${HOME}/opencv-3.3.1/3rdparty/libpng/pngpriv.h

/*# if (defined(ARM_NEON) || defined(__ARM_NEON)) && */

if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) && \

就是把原文上面的一行注释掉改称下面的一行,make就成功了,我也是两个方法都改了。然后install就安装到自己叠目录下了。

之后就是编写代码运行程序。但是之前已经在linux下安装编译过opencv各种库,所以写cmakelists.txt时可能会混淆,我为了区分便于更改linux和arm的编译环境(两者都可以使用),新建一个cross.cmake文件用来存放交叉编译环境的各种库的路径,在arm上使用时就include (cross.cmake),linux上就不引用。解决纷争。

-------------------------------------------------------------
因为板子上没有gtk,网上说移植比较麻烦,所以选择了qt,configure时勾选WITH——QT去掉WITH-GTK。
然后添加其他里面的路径,在qt安装路径下的lib/cmake/文件夹下寻找需要的同名文件夹
类似HI3559A上交叉编译opencv4.1.0配置代码环境_第1张图片---------------------------------------------------------------

之前选择 with_quirc,需要添加opengl库,但是添加上总会出现各种各样的make和make install错误,可能时opengl需要依赖其他的安装编译库,子没有弄,可以参考一下
https://blog.csdn.net/weixin_34315665/article/details/92085956
(自己没有试是否能行)
没有选择,添加完了编译安装成功。qt_qmake_executable选择交叉编译后的目录下bin里的qmake,其他文件也是交叉编译过后的文件,比如qt5core目录等,之前试验了没有用同一个交叉编译链编译的qt库会出席那文件格式错误等信息,尝试用了pc上的和板子上厂家编译安装好的qt库,板子上的会出现某些函数undefined等错误,也不知道怎么解决,干脆自己编译。

你可能感兴趣的:(笔记)