OpenCV是从Intel在1999年建立的一个项目上发展起来的一个开源的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它是轻量级的特别高效——由一系列C函数和少量C++类构成,目前实现了很多图像处理和计算机视觉方面的通用算法,并且提供了C\C++、Python、Ruby、MATLAB等多种语言的接口。由于OpenCV的应用领域非常广如人机互动、图像分割识别、运动分析跟踪、机器视觉等,所以一直都很受欢迎。

安装
以Ubuntu14.04LTS为例,安装之前我们先准备一下环境,解决依赖问题,建议同时安装qt,输入以下命令就可以:
1
| $ sudo apt-get install build-essential cmake libopencv-dev libgtk2.0-dev pkg-config python-dev python-numpy libavformat-dev libtiff4-dev libswscale-dev libjasper-dev
|
其中:
- GCC:build-essential
- CMake:cmake
- GTK开发版:libgtk2.0-dev
- pkg-config:pkg-config
- Python:python-dev
- Numpy:python-numpy
- 媒体包:ffmpeg、libavcodec-dev、libavformat-dev、libswscale-dev、libjpeg-dev、libpng-dev libtiff-dev、libjasper-dev
- 安装qt的命令:
1
| sudo apt-get install qt-sdk
|
然后下载一下源代码,我们这里以2.4.13为例:
1
| $ wget https://github.com/Itseez/opencv/archive/2.4.13.zip
|
紧接着解压缩,新建build目录,然后配置安装在/usr/local目录下:
1 2 3 4 5
| $ unzip 2.4.13.zip $ cd opencv-2.4.13 $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
|
编译,安装:
1 2
| $ make -j $(nproc) # 时间比较长,make -j可以进行多核处理器的编译,$(nproc)可以返回机器的核数. $ make install # 把编译结果安装到 /usr/local下面.
|

配置
在文件/etc/ld.so.conf中添加/usr/local/lib,使用动态库管理命令ldconfig,共享opencv的相关动态链接库:
然后设置一下环境变量,在/etc/bash.bashrc文件的最后一行添加:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
运行
在解压缩文件后的目录中找到OpenCV的samples示例目录,然后进入c语言的示例目录,然后执行下面脚本,会将所有samples示例都编译成可执行文件,命令和图示如下:
1 2 3 4
| $ cd samples $ cd c $ ls $ ./build_all.sh
|

然后我们挑一个运行一下Delaunay(三角剖分算法)看看效果:

HelloWorld
1 2 3
| $ mkdir test $ cd test $ cp ../samples/cpp/lena.jpg lena.jpg #copy一个经典的美女图片
|
然后编辑HelloWorld.cpp文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <stdio.h> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> using namespace cv; int main( int argc, char** argv ) { if( argc != 2 )//判断参数是否是两个 { printf( "没有图片,请输入图片! \n " ); return -1; } char* imageName = argv[1]; Mat image; image = imread( imageName, 1 );//读入图片 if( !image.data)//判断是否有数据 { printf( "图片没有内容! \n " ); return -1; } namedWindow( imageName, CV_WINDOW_AUTOSIZE ); imshow( imageName, image );//显示图片 waitKey(0); return 0; }
|
新建CMakeLists.txt,内容如下:
1 2 3 4 5
| cmake_minimum_required(VERSION 2.8) project(helloworld) add_executable(helloworld HelloWorld.cpp) find_package(OpenCV REQUIRED) target_link_libraries(helloworld ${OpenCV_LIBS})
|
然后编译一下,运行看看:
1 2 3 4 5 6
| $ mkdir build $ cd build $ cmake .. $ make $ ./helloworld lena.jpg $ ./helloworld ../lena.jpg
|

先就到这里,有兴趣的同学可以继续看samples中的例子。