本系列文章基于 OpenCV 2.x 版本。

OpenCV 简介

OpenCV是一个基于C/C++语言的开源图像处理函数库。

OpenCV 包含非常丰富的函数库。这些函数被封装在不同的模块里。下面列举了部分常见的模块:

  • core - 核心函数库。
  • imgproc - 图像处理库。包含线性、非线性图像滤波器、几何图像变换(大小拉伸、仿射变换、倾斜、重映射)、颜色空间变换、直方图,等等。
  • highgui - GUI、媒体 I/O 函数库。
  • video - 视频处理库。包含运动估计、去背景、对象捕捉算法等。
  • calib3d - 处理多个视角的几何算法库,包含单个、双目相机校正、对象姿势估计等。
  • features2d - 特征检测函数库;
  • objdetect - 对象检测函数库,以及一些预定义类型的实例(如:脸部、眼睛、马克杯、人、车,等等)。
  • ml - 机器学习函数库。
  • flann - 高维空间中的聚类和搜索函数库。
  • gpu - GPU加速算法。
  • stitching - 图像拼接函数库。
  • ……

更全面的模块列表可以参考官方文档

安装

ArchLinux 安装 OpenCV:

1
$ yaourt -S opencv opencv-samples opencv-docs

第一个程序

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
#include <cv.h>
#include <highgui.h>

using namespace cv;

int main(int argc, char *argv[])
{
if (argc != 2){
printf("%s image", argv[0]);
return -1;
}

Mat image;
image = imread(argv[1], 1);

if (!image.data){
printf("No image data \n");
return -1;
}

namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
imshow("Display Image", image);

waitKey(0);

return 0;
}

将它保存为 DisplayImage.cpp 文件。为了方便演示,可以下载下面这幅图片到该目录:

Lena
Lena

使用 CMake 编译

为了方便在 Linux 中使用 OpenCV,我们使用 CMake 来构建项目。编写 CMakeLists.txt 如下:

1
2
3
4
5
cmake_minimum_required(VERSION 2.8)
project(DisplayImage)
find_package(OpenCV REQUIRED)
add_executable(Demo DisplayImage)
target_link_libraries(Demo ${OpenCV_LIBS})

完成后,使用下列命令编译项目:

1
2
3
cd <DisplayImage_directory>
cmake .
make

结果

完成后你会在该目录下找到一个可执行程序(本例中为 Demo )。然后可以执行它,例如:

1
./Demo lena.png

之后可以看到如下的结果:

Comments