opencv是一个开放源代码的机器视觉库,它是基于c/c++开发的,可用与计算机视觉、图像处理、模式识别和跟踪等等。
1. opencv编译
从opencv官网下载最新的opencv3.2.0源码,可以在源码包中查看README文件等,确定编译、安装的步骤。
opencv通过cmake进行配置。
cmake-gui
输入opencv源码目录,构建目录后,点击Configure,先配置交叉编译工具。
交叉工具配置完成后,将会出来默认的选项配置,选中基本jpeg、png、opencv模块的构建。
WITH组中,选中WITH_QT,必须已经编译安装好Qt,不要点选其它的GUI(如WITH_GTK),用于支持opencv HighGUI,HighGUI用来建立快速软件原形或是试验用的,它的设计意图是为用户提供简单易用的图形用户接口,这是根据不同GUI,需要移植的部分。opencv已经内部支持了MFC、Qt、GTK等等。
点选WITH_QT后,再进一步Configure,会进一步出来Qt的配置选项,设置Qt相应的安装目录。
设置编译选项,设置安装目录为/usr/opencv3.2.0,编译Qt5.8工程需支持c++11标准,CMAKE_CXX_FLAGS加上 -std=c++11。
最后点击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的环境变量。
# opencv
OPENCVDIR=/usr/opencv3.2.0
# shared libraries
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:
$QTDIR/lib:$OPENCVDIR/lib
export LD_LIBRARY_PATH
3. 应用编程
编译安装好opencv后,就可以用opencv的api函数进行应用编程了,简单的用opencv显示一张jpg图片的测试代码opevcv_test.c如下。
#include <stdlib.h>
#include <stdio.h>
#include "cv.h"
#include "highgui.h"
#include <unistd.h>
int main()
{
IplImage*img = 0;
//load an image
img=cvLoadImage("/mnt/lena.jpg",-1);
if(!img) {
printf("Couldnot load image file.\n");
exit(0);
}
//create a window
cvNamedWindow("mainWin",CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin",208, 0);
//show the image
cvShowImage("mainWin",img );
//refresh the image
cvWaitKey(5000);
//release the image
cvReleaseImage(&img);
return 0;
}
编译应用:
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。
mount /dev/mmcblk1 /mnt
./opencv_test