当前位置:   article > 正文

Ubuntu18.04系统opencv-3.4.2+aarch64-linux-g++交叉编译环境搭建

aarch64-linux-g++

aarch64-linux-g++ 6.40交叉编译环境的特殊性是:用网上一般的Opencv编译方法可以成功编并安装,但是不能编译出应用程序!编译C/C++ 程序时会提示:

致命错误 <opencv2/opencv.hpp> 无这个文件或目录!

检查pkg-config,opencv.pc,bash.bashrc 等设置都不能解决问题。后来发现是Cmake-gui设置问题,正确方法如下:

一、Opencv 安装

root@li-desktop:/home/li/usr/opencv-3.4.2# cmake-gui

1.cmake 设置

打开cmake,设置Opencv文件夹和MAKE文件夹,然后点Configure下一步设置。

在弹出的窗口中选择第三个 Specify toolchain File crosscompiling ,这是Opencv官方针对aarch64-linux-gcc 优化的toolchain,所以一定能顺利通过cmake。

Next ,这一步选取官方Make方案文件,进入opencv3.4.2源文件夹里的platforms文件夹,选取 aarch64-gnu.toolchain.cmake文件。

点open后完成设置。选取你的安装目标路径CMAKE_INSTALL_PREFIX,选择自己需要的包进行安装,然后点Configrue,完成后点Generate完成Cmake 。

2. make

  1. root@li-desktop:/home/li/usr/opencv-3.4.2/opencv3arm/# make -j4 //14
  2. [100%] Built target opencv_test_calib3d
  3. [100%] Linking CXX executable ../../bin/opencv_perf_stitching
  4. [100%] Built target opencv_perf_stitching

3. make install

  1. root@li-desktop:/home/li/usr/opencv-3.4.2/opencv342arm# make install
  2. [ 0%] Built target gen-pkgconfig
  3. [ 2%] Built target zlib
  4. [ 6%] Built target libjpeg-turbo
  5. [ 9%] Built target libtiff
  6. [ 18%] Built target libwebp
  7. 。。。。
  8. -- Installing: /usr/local/arm/opencv342arm/bin/opencv_annotation
  9. -- Installing: /usr/local/arm/opencv342arm/bin/opencv_visualisation
  10. -- Installing: /usr/local/arm/opencv342arm/bin/opencv_interactive-calibration
  11. -- Installing: /usr/local/arm/opencv342arm/bin/opencv_version
  12. root@li-desktop:/home/li/usr/opencv-3.4.2/opencv342arm#
  13. //安装完成!

二、Opencv工作环境设置

 1. 设置pkg-config路径  

 vim /etc/bash.bashrc

在bashrc最后行加入以下路径,具体跟据自己的安装路径更改。

  1. export PKG_CONFIG_LIBDIR=/usr/local/arm/opencv342arm/lib/pkgconfig
  2. xport PKG_CONFIG_PATH
  3. //按i编辑,安Esc完成,按Shift+zz 保存退出。必须在root下才能保存。
  4. //完成后刷新bash.bashrc
  5. source /etc/bash.bashrc

2.opencv.pc

     以上路径是告诉pkg-config到/usr/local/arm/opencv342/lib/pkgconfig目录下寻找opencv.pc文件。opencv.pc才是重点!里面记录了incudle和lib 库文件和头文件的路径,具体见下:

  1. # Package Information for pkg-config
  2. prefix=/usr/local/arm/opencv342arm //安装路径
  3. exec_prefix=${prefix}
  4. libdir=${exec_prefix}/lib //库文件路径
  5. includedir_old=${prefix}/include/opencv //头文件路径
  6. includedir_new=${prefix}/include //头文件路径
  7. Name: OpenCV //名称
  8. Description: Open Source Computer Vision Library
  9. Version: 3.4.2
  10. Libs: -L${exec_prefix}/lib -lopencv_dnn -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core
  11. Libs.private: -ldl -lm -lpthread -lrt
  12. Cflags: -I${includedir_old} -I${includedir_new}

Libs:是安装的库文件。名称可以自己改。

3.测试

(1).测试安装版本,其实是测试opencv.pc路径

  1. pkg-config --modversion opencv
  2. 3.4.2
  3. //如有多个opencv版本,只要把安装目录与opencvXX.pc取相对应的名称
  4. //并把不同的XXX.pc文件放在同一个pkgconfig目录下则可

(2).测试库文件与头文件

  1. $pkg-config --cflags --libs opencv
  2. -I/usr/local/arm/opencv342arm/include/opencv -I/usr/local/arm/opencv342arm/include -L/usr/local/arm/opencv342arm/lib -lopencv_dnn -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core

三、编译程序

    用摄像头读取程序测试,名称为camtest2.cpp,把它放到 /home 目录。

  1. //camtest2.cpp
  2. //摄像头读取程序
  3. #include<opencv2/opencv.hpp>
  4. #include<iostream>
  5. using namespace std;
  6. using namespace cv;
  7. int main(int argc,char **argv)
  8. {
  9. VideoCapture capture(0);
  10. namedWindow("hhh",CV_WINDOW_AUTOSIZE);
  11. while(true)
  12. {
  13. Mat frame;
  14. capture>>frame;
  15. imshow("usb cam",frame);
  16. waitKey(30);
  17. }
  18. return 0;
  19. }

进入/home 打开终端输入:

  1. $cd /home
  2. $aarch64-linux-g++ `pkg-config --cflags opencv` camtest2.cpp -o camtest2 `pkg-config --libs opencv`

  如果没错误提示,在/home目录下会生成camtest2二进制可执行文件,当然这个文件只能在arm板上执行。

四、移植

   移植是指把opencv库移植到ARM开发板上,把Opencv安装目录下lib目录里的所有库文件复制到开发板/usr/lib下就行了。

    完。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/522474
推荐阅读
相关标签
  

闽ICP备14008679号