OpenCV 简介

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

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下面.

OpenCV

配置

在文件/etc/ld.so.conf中添加/usr/local/lib,使用动态库管理命令ldconfig,共享opencv的相关动态链接库:

1
$ sudo ldconfig -v 

然后设置一下环境变量,在/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
OpenCV

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

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

OpenCV

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