opencv是一个开放源代码的机器视觉库,它是基于c/c++开发的,可用与计算机视觉、图像处理、模式识别和跟踪等等。

1. opencv编译

从opencv官网下载最新的opencv3.2.0源码,可以在源码包中查看README文件等,确定编译、安装的步骤。

opencv通过cmake进行配置。

  1. cmake-gui

23_opencv移植 - 图1

输入opencv源码目录,构建目录后,点击Configure,先配置交叉编译工具。 23_opencv移植 - 图2 23_opencv移植 - 图3

交叉工具配置完成后,将会出来默认的选项配置,选中基本jpeg、png、opencv模块的构建。 23_opencv移植 - 图4

WITH组中,选中WITH_QT,必须已经编译安装好Qt,不要点选其它的GUI(如WITH_GTK),用于支持opencv HighGUI,HighGUI用来建立快速软件原形或是试验用的,它的设计意图是为用户提供简单易用的图形用户接口,这是根据不同GUI,需要移植的部分。opencv已经内部支持了MFC、Qt、GTK等等。 23_opencv移植 - 图5

点选WITH_QT后,再进一步Configure,会进一步出来Qt的配置选项,设置Qt相应的安装目录。 23_opencv移植 - 图6

设置编译选项,设置安装目录为/usr/opencv3.2.0,编译Qt5.8工程需支持c++11标准,CMAKE_CXX_FLAGS加上 -std=c++11。 23_opencv移植 - 图7

最后点击Configure,没有错误后,点击Generate,生成Makefile文件,进入到opencv的build目录,make、make install安装opencv。

2. 环境变量

在/usr/opencv3.2.0目录中生成include、lib、share目录,把lib目录拷贝到根文件系统/usr/opencv3.2.0中。为了能使用opencv,系统必须知道opencv的位置,配置等等。在/etc/profile文件中加入opencv的环境变量。

  1. # opencv
  2. OPENCVDIR=/usr/opencv3.2.0
  3. # shared libraries
  4. LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:
  5. $QTDIR/lib:$OPENCVDIR/lib
  6. export LD_LIBRARY_PATH

3. 应用编程

编译安装好opencv后,就可以用opencv的api函数进行应用编程了,简单的用opencv显示一张jpg图片的测试代码opevcv_test.c如下。

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include "cv.h"
  4. #include "highgui.h"
  5. #include <unistd.h>
  6. int main()
  7. {
  8. IplImage*img = 0;
  9. //load an image
  10. img=cvLoadImage("/mnt/lena.jpg",-1);
  11. if(!img) {
  12. printf("Couldnot load image file.\n");
  13. exit(0);
  14. }
  15. //create a window
  16. cvNamedWindow("mainWin",CV_WINDOW_AUTOSIZE);
  17. cvMoveWindow("mainWin",208, 0);
  18. //show the image
  19. cvShowImage("mainWin",img );
  20. //refresh the image
  21. cvWaitKey(5000);
  22. //release the image
  23. cvReleaseImage(&img);
  24. return 0;
  25. }

编译应用:

  1. arm-linux-g++opencv_test.c -o opencv_test -I /usr/opencv3.2.0/include/opencv -I/usr/opencv3.2.0/include -L /usr/opencv3.2.0/lib-lopencv_features2d -lopencv_flann -lopencv_objdetect -lopencv_highgui-lopencv_ml -lopencv_photo -lopencv_shape -lopencv_superres -lopencv_video-lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core -L/usr/Qt5.8/lib -lQt5Core -lQt5Gui -lQt5Test -lQt5Concurrent -lQt5Widgets

拷贝lena.jpg图片到sd卡,板端启动后,挂载sd卡到/mnt目录,运行opencv_test。

  1. mount /dev/mmcblk1 /mnt
  2. ./opencv_test

23_opencv移植 - 图8