微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 第三篇:使用镜像源装OpenCV

第三篇:使用镜像源装OpenCV

时间:10-02 整理:3721RD 点击:
之前使用vnc连接时,桌面显示的或是X-Window-Manager或是运行在图形化的Terminal,那么,若想使用已装好的Mate桌面,该怎么做呢?
可以这么做,直接在图形界面终端运行桌面的session;然而还有一种更好的办法,使用终端编辑home目录下的.vnc/xstartup,使用如下命令
vi ~/.vnc/xstartup
注释掉最后两行,添加mate-session &,文件内容修改后如下:

  1. #!/bin/sh

  2. # Uncomment the following two lines for normal desktop:
  3. # unset SESSION_MANAGER
  4. # exec /etc/X11/xinit/xinitrc

  5. [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
  6. [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
  7. xsetroot -solid grey
  8. vncconfig -iconic &
  9. #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
  10. #x-window-manager &
  11. mate-session &

复制代码


按照之前连接vnc,桌面显示如下:


接下来说说正题,安装opencv,有多种办法,但整体分为两大类,从镜像源里安装和自编译,自编译安装通用性好,尤其对于有一些生僻的架构,但,从镜像源里安装,是由一些人员编译完了,分类打包,好处是不需要编译就可以,与操作系统协调性好,但是缺点也比较多,例如,最新版往往不能及时提供,卸载麻烦等,总之有利有弊。
高通410c提供的alip版本内部已经提供了一些用于opencv程序运行的so库,但是为了开发,我们需要重新从源里索引一下,使用如下命令:
sudo apt update
源里提供的libopencv-dev,提供了opencv.pc,这是务必要装的,便于使用pkg-config;我从源里安装的opencv文件如下:

  1. linaro@linaro-alip:~$ dpkg -l|grep  opencv
  2. ii  libopencv-calib3d-dev:arm64           2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-calib3d
  3. ii  libopencv-calib3d2.4:arm64            2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision Camera Calibration library
  4. ii  libopencv-contrib-dev:arm64           2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-contrib
  5. ii  libopencv-contrib2.4:arm64            2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision contrib library
  6. ii  libopencv-core-dev:arm64              2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-core
  7. ii  libopencv-core2.4:arm64               2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision core library
  8. ii  libopencv-dev                         2.4.9.1+dfsg-1+deb8u1                     arm64        development files for opencv
  9. ii  libopencv-features2d-dev:arm64        2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-features2d
  10. ii  libopencv-features2d2.4:arm64         2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision Feature Detection and Descriptor Extraction library
  11. ii  libopencv-flann-dev:arm64             2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-flann
  12. ii  libopencv-flann2.4:arm64              2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision Clustering and Search in Multi-Dimensional spaces library
  13. ii  libopencv-gpu-dev:arm64               2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-gpu2.4
  14. ii  libopencv-gpu2.4:arm64                2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision GPU library
  15. ii  libopencv-highgui-dev:arm64           2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-highgui
  16. ii  libopencv-highgui2.4:arm64            2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision High-level GUI and Media I/O library
  17. ii  libopencv-imgproc-dev:arm64           2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-imgproc
  18. ii  libopencv-imgproc2.4:arm64            2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision Image Processing library
  19. ii  libopencv-legacy-dev:arm64            2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-legacy
  20. ii  libopencv-legacy2.4:arm64             2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision legacy library
  21. ii  libopencv-ml-dev:arm64                2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-ml
  22. ii  libopencv-ml2.4:arm64                 2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision Machine Learning library
  23. ii  libopencv-objdetect-dev:arm64         2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-objdetect
  24. ii  libopencv-objdetect2.4:arm64          2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision Object Detection library
  25. ii  libopencv-ocl-dev:arm64               2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-ocl2.4
  26. ii  libopencv-ocl2.4:arm64                2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision OpenCL support library
  27. ii  libopencv-photo-dev:arm64             2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-photo2.4
  28. ii  libopencv-photo2.4:arm64              2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision computational photography library
  29. ii  libopencv-stitching-dev:arm64         2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-stitching2.4
  30. ii  libopencv-stitching2.4:arm64          2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision image stitching library
  31. ii  libopencv-superres-dev:arm64          2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-superres2.4
  32. ii  libopencv-superres2.4:arm64           2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision Super Resolution library
  33. ii  libopencv-ts-dev:arm64                2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-ts2.4
  34. ii  libopencv-ts2.4:arm64                 2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision ts library
  35. ii  libopencv-video-dev:arm64             2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-video
  36. ii  libopencv-video2.4:arm64              2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision Video analysis library
  37. ii  libopencv-videostab-dev:arm64         2.4.9.1+dfsg-1+deb8u1                     arm64        development files for libopencv-videostab2.4
  38. ii  libopencv-videostab2.4:arm64          2.4.9.1+dfsg-1+deb8u1                     arm64        computer vision video stabilization library
  39. ii  libopencv2.4-java                     2.4.9.1+dfsg-1+deb8u1                     all          Java bindings for the computer vision library
  40. ii  libopencv2.4-jni                      2.4.9.1+dfsg-1+deb8u1                     arm64        Java jni library for the computer vision library
  41. ii  opencv-data                           2.4.9.1+dfsg-1+deb8u1                     all          development data for opencv
  42. ii  opencv-doc                            2.4.9.1+dfsg-1+deb8u1                     all          OpenCV documentation and examples
  43. linaro@linaro-alip:~$ dpkg -l|grep  libcv
  44. ii  libcv-dev:arm64                       2.4.9.1+dfsg-1+deb8u1                     arm64        Translation package for libcv-dev
  45. ii  libcv2.4                              2.4.9.1+dfsg-1+deb8u1                     all          computer vision library - libcv* translation package
  46. ii  libcvaux-dev:arm64                    2.4.9.1+dfsg-1+deb8u1                     arm64        Translation package for libcvaux-dev

复制代码

安装好了,我们再详细介绍pkg-config,此命令会查找环境变量PKG_CONFIG_PATH对应目录和/usr/lib/pkgconfig/下的.pc文件,其有三种参数,分别是list-all,cflags,libs
此下示例用法:

  1. linaro@linaro-alip:~$ pkg-config --list-all |grep opencv
  2. opencv                    OpenCV - Open Source Computer Vision Library
  3. linaro@linaro-alip:~$ pkg-config --cflags opencv
  4. -I/usr/include/opencv
  5. linaro@linaro-alip:~$ pkg-config --libs opencv
  6. /usr/lib/aarch64-linux-gnu/libopencv_calib3d.so -lopencv_calib3d /usr/lib/aarch64-linux-gnu/libopencv_contrib.so -lopencv_contrib /usr/lib/aarch64-linux-gnu/libopencv_core.so -lopencv_core /usr/lib/aarch64-linux-gnu/libopencv_features2d.so -lopencv_features2d /usr/lib/aarch64-linux-gnu/libopencv_flann.so -lopencv_flann /usr/lib/aarch64-linux-gnu/libopencv_gpu.so -lopencv_gpu /usr/lib/aarch64-linux-gnu/libopencv_highgui.so -lopencv_highgui /usr/lib/aarch64-linux-gnu/libopencv_imgproc.so -lopencv_imgproc /usr/lib/aarch64-linux-gnu/libopencv_legacy.so -lopencv_legacy /usr/lib/aarch64-linux-gnu/libopencv_ml.so -lopencv_ml /usr/lib/aarch64-linux-gnu/libopencv_objdetect.so -lopencv_objdetect /usr/lib/aarch64-linux-gnu/libopencv_ocl.so -lopencv_ocl /usr/lib/aarch64-linux-gnu/libopencv_photo.so -lopencv_photo /usr/lib/aarch64-linux-gnu/libopencv_stitching.so -lopencv_stitching /usr/lib/aarch64-linux-gnu/libopencv_superres.so -lopencv_superres /usr/lib/aarch64-linux-gnu/libopencv_ts.so -lopencv_ts /usr/lib/aarch64-linux-gnu/libopencv_video.so -lopencv_video /usr/lib/aarch64-linux-gnu/libopencv_videostab.so -lopencv_videostab

复制代码

此刻我们使用一个显示简单百度Logo的Demo,代码如下:

  1. #include <stdio.h>
  2. #include <cv.h>
  3. #include <highgui.h>

  4. int main(void)
  5. {
  6.         IplImage *img = cvLoadImage("baidu.png", 1);
  7.         cvNamedWindow("Example", CV_WINDOW_AUTOSIZE);
  8.         cvShowImage("Example", img);
  9.         cvWaitKey(0);
  10.         cvReleaseImage(&img);
  11.         cvDestroyWindow("Example");
  12.         return 0;

  13. }

复制代码

命令行gcc编译有两种办法,一种使用-I、-l等指定共享库和头文件;另一种则是使用pkg-config,使用如下:

  1. linaro@linaro-alip:~$ gcc -o main main.c `pkg-config --cflags --libs opencv`
  2. /usr/bin/ld: /tmp/ccbQ85Ps.o: undefined reference to symbol 'lrint@@GLIBC_2.17'
  3. //lib/aarch64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
  4. collect2: error: ld returned 1 exit status

复制代码

会发现报错,此错是由于没添加math库,使用如下命令就可以:

  1. linaro@linaro-alip:~$ gcc -o main main.c `pkg-config --cflags --libs opencv` -lm
  2. linaro@linaro-alip:~$

复制代码


我们切换到vnc看看效果:


接下来我们使用eclipse,要使用eclipse,也有两种,源里和IBM提供源码编译,由于IBM只提供x86和x64的二进制, 使用如下命令就可以:

  1. sudo apt install eclipse-cdt

复制代码


就可以了,接着在eclipse使用opencv,要想使用,则需要配置相关的参数,选择项目的属性,不是Eclipse里的Window下的属性,选择C/C++ Build->Settings,直接按下图配置就行:


编译前需要保存,否则会报错。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top