交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;

交叉编译opencv------------------------------------------------

1:资料准备

opencv-3.4.3.zip

opencv_contrib-3.4.3.zip

boostdescetc.zip

2:opencv目录下创建一个build和install文件夹

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第1张图片

cmake-gui 选择source code和build目录,勾选Grouped和Advanced

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第2张图片

点击Configure

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第3张图片
点击next

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第4张图片

点击Finish

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第5张图片

出现大量红色没事,继续勾选 Grouped 以及 Advances

接着配置一下编译选项,search 框输入 CMAKE_INSTALL_PREFIX,指定你的安装路径,之前建立的 install 文件夹

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第6张图片

输入 CMAKE_CXX_FLAG 与 CMAKE_CXX_FLAG_DEBU

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第7张图片

输入BUILD_opencv_world

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第8张图片

输入zlib

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第9张图片

OPENCV_EXTRA_MODULES_PATH, 指向 opencv_contrib-3.4.3/modules目录

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第10张图片  

打开 opencv 源码的 3rdparty/protobuf/src/google/protobuf/stubs/common.cc 文件

:set number显示行数,找到43行

加入#define HAVE_PTHREAD 避免编译的时候报找不到 pthread 错误;

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第11张图片

再点击Configure和Generate

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第12张图片

再打开一个终端

再次进入build目录下

执行make -j 16 可以选择16核,达不到也没关系电脑会自动选择

错误提示:

1:undefined reference to”png_init_filter_functions_neon”

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第13张图片

解决方法:修改

/opencv-3.4.3/3rdparty/libpng/pngpriv.h

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第14张图片

错误 2:

解决办法:将 boostdescetc.zip 里的.i 文件复制到目录opencv_contrib/modules/xfeatures2d/src/下即可

编译完成

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第15张图片

make install

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第16张图片

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第17张图片

完成opencv库的编译

linux qt + opencv交叉编译到rv1126显示图片--------------------------------------

点击ubuntu左下角,打开Qt Creator

1.配置ARM交叉编译器

工具à选项àKitsà编译器à添加àGCC

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第18张图片

C 和 C++添加路径如下,编译器路径是交叉编译工具创建的路径

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第19张图片

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第20张图片

2.配置qmake   路径是安装交叉编译器的路径

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第21张图片

3.配置Kit

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第22张图片

创建一个简单项目,选择Kits时勾选上交叉编译工具链atk-dlrv1126

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第23张图片

使用小锤子进行构建,不要直接点击运行

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第24张图片

写一个简单使用opencv显示图片的qt程序

.pro如下,路径按之前交叉编译opencv创建的路径

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第25张图片

main.cpp如下,路径选择不对会报错,找不到需要的opencv库

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第26张图片

编译生成build-test-atk_dlrv1126-Release

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第27张图片

进入该文件夹下存在可执行文件test

将test可执行文件adb push到板端的/root 目录下

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第28张图片

进入板端 cd /root

执行./test

报错

解决方案:

创建qt  .pro目录下需要用到的动态库的加载路径

创建一系列的路径

/home/fang/opencv_rv1126/opencv-3.4.3/install/lib交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第29张图片

adb push将动态库拷贝到目标目录下

拷贝完成

再进入/root目录下执行./test

报错

解决方案:

拷贝动态链接库到板端/lib路径下

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第30张图片

再次执行./test

报错

原因:开发板上缺少GTK/QT这类图形显示功能

opencv 使用的时候需要调用到 GUI 窗口类,在交叉编译opencv的时候,没有勾选GTK的窗口类(或者勾选了GTK的窗口类),在板子上面没有办法调用GTK窗口类,所以可以认为:opencv把图像是处理好了,但是还不能使用窗口显示。

解决方案:

修改Qt代码

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第31张图片

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第32张图片

重新编译

删除板端之前的test可执行文件

重新拷贝test可执行文件到开发板

运行./test

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第33张图片

交叉编译opencv, linux qt + opencv交叉编译到rv1126显示图片;_第34张图片

你可能感兴趣的:(opencv,linux,qt)