OpenCV的基本数据结构及示例

OpenCV中强大的Mat类型大家已经比较熟悉了。这里梳理一些在工程中其他经常用到的几种基本数据类型。包括:

Vec

Scalar

Point

Size

Rect

RotatedRect

1. Vec类

1.1 基本概念

Vec是一个模板类,主要用于存储数值向量。

1.2 用法

(1)可用它来定义任意类型的向量

[cpp] view plaincopy
  1. Vec<double, 8> myVector; // 定义一个存放8个double型变量的向量

(2)使用[]访问Vec向量成员

[cpp] view plaincopy
  1. myVector[0]=0;

(3)可使用以下预定义的类型

[cpp] view plaincopy
  1. typedef Vec<uchar, 2> Vec2b;
  2. typedef Vec<uchar, 3> Vec3b;
  3. typedef Vec<uchar, 4> Vec4b;
  4. typedef Vec<short, 2> Vec2s;
  5. typedef Vec<short, 3> Vec3s;
  6. typedef Vec<short, 4> Vec4s;
  7. typedef Vec<int, 2> Vec2i;
  8. typedef Vec<int, 3> Vec3i;
  9. typedef Vec<int, 4> Vec4i;
  10. typedef Vec<float, 2> Vec2f;
  11. typedef Vec<float, 3> Vec3f;
  12. typedef Vec<float, 4> Vec4f;
  13. typedef Vec<float, 6> Vec6f;
  14. typedef Vec<double, 2> Vec2d;
  15. typedef Vec<double, 3> Vec3d;
  16. typedef Vec<double, 4> Vec4d;
  17. typedef Vec<double, 6> Vec6d;

(4)Vec支持的运算如下:

[cpp] view plaincopy
  1. v1 = v2 + v3
  2. v1 = v2 - v3
  3. v1 = v2 * scale
  4. v1 = scale * v2
  5. v1 = -v2
  6. v1 += v2
  7. v1 == v2, v1 != v2
  8. norm(v1) (euclidean norm)

1.3 示例代码

(1)向量定义与元素的访问

[cpp] view plaincopy
  1. // Vec
  2. cv::Vec<double, 8>  myVector;
  3. for(int i=0; i<myVector.rows;i++)
  4. myVector[i] = i;
  5. cout<<"myVector= "<<myVector<<endl;
  6. cout<<"myVector[0]= "<<myVector[0]<<endl;
  7. cout<<"myVector[3]= "<<myVector[3]<<endl;

运行结果:

(2)基本运算

[cpp] view plaincopy
  1. cv::Vec<int, 6> v1,v2,v3;
  2. for(int i=0; i<v2.rows;i++){ //v2.rows返回向量v2的行数
  3. v2[i] = i;
  4. v3[i] = i+1;
  5. }
  6. v1 = v2 + v3;
  7. cout<<"v2       = "<<v2<<endl;
  8. cout<<"v3       = "<<v3<<endl;
  9. cout<<"v1=v2+v3= "<<v1<<endl;
  10. cout<<"v1=v2*2  = "<<v2*2<<endl;
  11. cout<<"v1=-v2   = "<<-v2<<endl;
  12. cout<<"v1==v2   = "<<(v1==v2)<<endl;
  13. cout<<"v1!=v2   = "<<(v1!=v2)<<endl;
  14. cout<<"norm(v2)= "<<norm(v2)<<endl;

运行结果:

2. Scalar类

2.1 基本概念

Scalar是一个从Vec类引出的模板类,是一个可存放4个元素的向量,广泛用于传递和读取图像中的像素值。

2.2 用法

可使用[]访问Scalar值。或使用如下方式定义BGR三个通道的值。

[cpp] view plaincopy
  1. cv:: Scalar( B, G, R )

2.3 示例代码

(1)cv::Scalar结构

[cpp] view plaincopy
  1. cv::Scalar myScalar;
  2. myScalar = cv::Scalar(0,255,0);
  3. cout<<"myScalar = "<<myScalar<<endl;
  4. system("pause");

运行结果:

(2)读取彩色图像像素值

彩色图像的每个像素对应三个部分:RGB三个通道。因此包含彩色图像的cv::Mat类会返回一个向量,向量中包含三个8位的数值。OpenCV为这样的短向量定义了一种类型,即我们上述的cv::Vec3b。这个向量包含三个无符号字符(unsigned character)类型的数据。

OpenCV存储通道次序为:蓝色、绿色、红色即BGR。
因此,访问彩色像素中元素的方法如下:

[cpp] view plaincopy
  1. cv::Mat pImg = cv::imread("Lena.jpg",1);
  2. if(!pImg.data)
  3. return 0;
  4. int x = 100, y = 100;
  5. cv::Scalar pixel=pImg.at<Vec3b>(x,y);
  6. cout<<"B chanel of pixel is = "<<pixel.val[0]<<endl;
  7. cout<<"G chanel of pixel is = "<<pixel.val[1]<<endl;
  8. cout<<"R chanel of pixel is = "<<pixel.val[2]<<endl;
  9. system("pause");

运行结果:

3. Point类

3.1 基本概念

常用于表示2维坐标(x,y)。

3.2 用法

(1)图像坐标

对图像而言,我们可以这样定义:

[cpp] view plaincopy
  1. cv::Point pt;
  2. pt.x = 10;
  3. pt.y = 8;

或者

[cpp] view plaincopy
  1. cv::Point pt =  Point(10, 8);

或者

[cpp] view plaincopy
  1. cv::Point pt(10,8);

(2)或使用如下预定义:

[cpp] view plaincopy
  1. typedef Point_<int> Point2i;
  2. typedef Point2i Point;
  3. typedef Point_<float> Point2f;
  4. typedef Point_<double> Point2d;

(3)基本运算

[cpp] view plaincopy
  1. pt1 = pt2 + pt3;
  2. pt1 = pt2 - pt3;
  3. pt1 = pt2 * a;
  4. pt1 = a * pt2;
  5. pt1 += pt2;
  6. pt1 -= pt2;
  7. pt1 *= a;
  8. double value = norm(pt); // L2 norm
  9. pt1 == pt2;
  10. pt1 != pt2;

3.3 示例代码

(1)设置坐标点

[cpp] view plaincopy
  1. // Point
  2. cv::Point pt;
  3. pt.x = 278;
  4. pt.y = 269;
  5. //或者
  6. //cv::Point  pt (278,269);
  7. cv::Scalar pix = pImg.at<Vec3b>(pt);
  8. cout<<"pix("<<pt.x<<","<<pt.y<<") = "<<pix<<endl;

运行结果:

(2)各类运算

[cpp] view plaincopy
  1. cv::Point pt1(10,20);
  2. cv::Point pt2(2,3);
  3. cout<<"pt1     = "<<pt1<<endl;
  4. cout<<"pt2     = "<<pt2<<endl;
  5. cout<<"pt1+pt2 = "<<pt1+pt2<<endl;
  6. cout<<"pt1+=pt2= "<<(pt1+=pt2)<<endl;
  7. cout<<"pt1-pt2 = "<<pt1-pt2<<endl;
  8. cout<<"pt2*2   = "<<pt2*2<<endl;

运行结果:

4. Size类

4.1 基本概念

模板类Size可表示一幅图像或一个矩形的大小。它包含宽、高2个成员:width , height还有一个有用的面积函数area()。

4.2 用法

[cpp] view plaincopy
  1. cv::Size size(int w, int h);
  2. //或者
  3. cv::Size size;
  4. size.width = w;
  5. size.height = h;

4.3 示例代码

[cpp] view plaincopy
  1. // Size
  2. cv::Size size1(6,3);
  3. cv::Size size2;
  4. size2.width = 4;
  5. size2.height = 2;
  6. cv::Mat mat1(size1,CV_8UC1,cv::Scalar(0));
  7. cv::Mat mat2(size2,CV_8UC3,cv::Scalar(1,2,3));
  8. cout<<"mat1 = "<<endl<<mat1<<endl;
  9. cout<<endl<<"mat2 = "<<endl<<mat2<<endl;
  10. system("pause");

运行结果:

5. Rect类

5.1 基本概念

Rect是另一个用于定义2维矩形的模板类。它由两个参数定义:

  • 矩形左上角坐标: (x,y)
  • 矩形的宽和高: width, height

Rect可以用来定义图像的ROI区域。

5.2 用法

[cpp] view plaincopy
  1. cv::Rect rect(x, y, width, height);

5.3 示例代码

[cpp] view plaincopy
  1. // Rect
  2. cv::Mat pImg = imread("Lena.jpg",1);
  3. cv::Rect  rect(180,200,200,200);//(x,y)=(180,200),w=200,height=200
  4. cv::Mat  roi = cv::Mat(pImg, rect);
  5. cv::Mat  pImgRect = pImg.clone();
  6. cv::rectangle(pImgRect,rect,cv::Scalar(0,255,0),2);
  7. cv::imshow("original image with rectangle",pImgRect);
  8. cv::imshow("roi",roi);
  9. cv::waitKey();

运行结果:

6. RotatedRect类

6.1 基本概念

最后一个基本数据类是一种特殊的矩形称为RotatedRect。这个类通过中心点,宽度和高度和旋转角度来表示一个旋转的矩形。

6.2 用法

旋转矩形类的构造函数:

[cpp] view plaincopy
  1. RotatedRect(const Point2f& center, const Size2f& size, float angle);

参数:

  • center:中心点坐标Point2f类型
  • size:矩形的宽度和高度,Size2f类型
  • angle:顺时针方向的旋转角度(单位°),float类型

6.3 示例代码

[cpp] view plaincopy
  1. //RotatedRect
  2. cv::Point2f center(100,100);
  3. cv::Size2f size(100,50);
  4. float angle = 45;// try 10, 30, 45
  5. RotatedRect rRect(center, size,  angle);
  6. cv::Mat image(200,200,CV_8UC3,cv::Scalar(0));
  7. Point2f vertices[4];
  8. rRect.points(vertices);
  9. for (int i = 0; i < 4; i++)
  10. line(image, vertices[i], vertices[(i+1)%4], Scalar(0,255,0));
  11. Rect brect = rRect.boundingRect();
  12. rectangle(image, brect, Scalar(255,0,0));
  13. imshow("rectangles", image);
  14. waitKey(0);

运行结果:

angle = 10, 30, 45

转载请注明出处(本文更新链接):http://blog.csdn.net/iracer/article/details/51292349

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iracer/article/details/51292349

OpenCV的基本数据结构及示例

OpenCV中强大的Mat类型大家已经比较熟悉了。这里梳理一些在工程中其他经常用到的几种基本数据类型。包括:

Vec

Scalar

Point

Size

Rect

RotatedRect

1. Vec类

1.1 基本概念

Vec是一个模板类,主要用于存储数值向量。

1.2 用法

(1)可用它来定义任意类型的向量

[cpp] view plaincopy
  1. Vec<double, 8> myVector; // 定义一个存放8个double型变量的向量

(2)使用[]访问Vec向量成员

[cpp] view plaincopy
  1. myVector[0]=0;

(3)可使用以下预定义的类型

[cpp] view plaincopy
  1. typedef Vec<uchar, 2> Vec2b;
  2. typedef Vec<uchar, 3> Vec3b;
  3. typedef Vec<uchar, 4> Vec4b;
  4. typedef Vec<short, 2> Vec2s;
  5. typedef Vec<short, 3> Vec3s;
  6. typedef Vec<short, 4> Vec4s;
  7. typedef Vec<int, 2> Vec2i;
  8. typedef Vec<int, 3> Vec3i;
  9. typedef Vec<int, 4> Vec4i;
  10. typedef Vec<float, 2> Vec2f;
  11. typedef Vec<float, 3> Vec3f;
  12. typedef Vec<float, 4> Vec4f;
  13. typedef Vec<float, 6> Vec6f;
  14. typedef Vec<double, 2> Vec2d;
  15. typedef Vec<double, 3> Vec3d;
  16. typedef Vec<double, 4> Vec4d;
  17. typedef Vec<double, 6> Vec6d;

(4)Vec支持的运算如下:

[cpp] view plaincopy
  1. v1 = v2 + v3
  2. v1 = v2 - v3
  3. v1 = v2 * scale
  4. v1 = scale * v2
  5. v1 = -v2
  6. v1 += v2
  7. v1 == v2, v1 != v2
  8. norm(v1) (euclidean norm)

1.3 示例代码

(1)向量定义与元素的访问

[cpp] view plaincopy
  1. // Vec
  2. cv::Vec<double, 8>  myVector;
  3. for(int i=0; i<myVector.rows;i++)
  4. myVector[i] = i;
  5. cout<<"myVector= "<<myVector<<endl;
  6. cout<<"myVector[0]= "<<myVector[0]<<endl;
  7. cout<<"myVector[3]= "<<myVector[3]<<endl;

运行结果:

(2)基本运算

[cpp] view plaincopy
  1. cv::Vec<int, 6> v1,v2,v3;
  2. for(int i=0; i<v2.rows;i++){ //v2.rows返回向量v2的行数
  3. v2[i] = i;
  4. v3[i] = i+1;
  5. }
  6. v1 = v2 + v3;
  7. cout<<"v2       = "<<v2<<endl;
  8. cout<<"v3       = "<<v3<<endl;
  9. cout<<"v1=v2+v3= "<<v1<<endl;
  10. cout<<"v1=v2*2  = "<<v2*2<<endl;
  11. cout<<"v1=-v2   = "<<-v2<<endl;
  12. cout<<"v1==v2   = "<<(v1==v2)<<endl;
  13. cout<<"v1!=v2   = "<<(v1!=v2)<<endl;
  14. cout<<"norm(v2)= "<<norm(v2)<<endl;

运行结果:

2. Scalar类

2.1 基本概念

Scalar是一个从Vec类引出的模板类,是一个可存放4个元素的向量,广泛用于传递和读取图像中的像素值。

2.2 用法

可使用[]访问Scalar值。或使用如下方式定义BGR三个通道的值。

[cpp] view plaincopy
  1. cv:: Scalar( B, G, R )

2.3 示例代码

(1)cv::Scalar结构

[cpp] view plaincopy
  1. cv::Scalar myScalar;
  2. myScalar = cv::Scalar(0,255,0);
  3. cout<<"myScalar = "<<myScalar<<endl;
  4. system("pause");

运行结果:

(2)读取彩色图像像素值

彩色图像的每个像素对应三个部分:RGB三个通道。因此包含彩色图像的cv::Mat类会返回一个向量,向量中包含三个8位的数值。OpenCV为这样的短向量定义了一种类型,即我们上述的cv::Vec3b。这个向量包含三个无符号字符(unsigned character)类型的数据。

OpenCV存储通道次序为:蓝色、绿色、红色即BGR。
因此,访问彩色像素中元素的方法如下:

[cpp] view plaincopy
  1. cv::Mat pImg = cv::imread("Lena.jpg",1);
  2. if(!pImg.data)
  3. return 0;
  4. int x = 100, y = 100;
  5. cv::Scalar pixel=pImg.at<Vec3b>(x,y);
  6. cout<<"B chanel of pixel is = "<<pixel.val[0]<<endl;
  7. cout<<"G chanel of pixel is = "<<pixel.val[1]<<endl;
  8. cout<<"R chanel of pixel is = "<<pixel.val[2]<<endl;
  9. system("pause");

运行结果:

3. Point类

3.1 基本概念

常用于表示2维坐标(x,y)。

3.2 用法

(1)图像坐标

对图像而言,我们可以这样定义:

[cpp] view plaincopy
  1. cv::Point pt;
  2. pt.x = 10;
  3. pt.y = 8;

或者

[cpp] view plaincopy
  1. cv::Point pt =  Point(10, 8);

或者

[cpp] view plaincopy
  1. cv::Point pt(10,8);

(2)或使用如下预定义:

[cpp] view plaincopy
  1. typedef Point_<int> Point2i;
  2. typedef Point2i Point;
  3. typedef Point_<float> Point2f;
  4. typedef Point_<double> Point2d;

(3)基本运算

[cpp] view plaincopy
  1. pt1 = pt2 + pt3;
  2. pt1 = pt2 - pt3;
  3. pt1 = pt2 * a;
  4. pt1 = a * pt2;
  5. pt1 += pt2;
  6. pt1 -= pt2;
  7. pt1 *= a;
  8. double value = norm(pt); // L2 norm
  9. pt1 == pt2;
  10. pt1 != pt2;

3.3 示例代码

(1)设置坐标点

[cpp] view plaincopy
  1. // Point
  2. cv::Point pt;
  3. pt.x = 278;
  4. pt.y = 269;
  5. //或者
  6. //cv::Point  pt (278,269);
  7. cv::Scalar pix = pImg.at<Vec3b>(pt);
  8. cout<<"pix("<<pt.x<<","<<pt.y<<") = "<<pix<<endl;

运行结果:

(2)各类运算

[cpp] view plaincopy
  1. cv::Point pt1(10,20);
  2. cv::Point pt2(2,3);
  3. cout<<"pt1     = "<<pt1<<endl;
  4. cout<<"pt2     = "<<pt2<<endl;
  5. cout<<"pt1+pt2 = "<<pt1+pt2<<endl;
  6. cout<<"pt1+=pt2= "<<(pt1+=pt2)<<endl;
  7. cout<<"pt1-pt2 = "<<pt1-pt2<<endl;
  8. cout<<"pt2*2   = "<<pt2*2<<endl;

运行结果:

4. Size类

4.1 基本概念

模板类Size可表示一幅图像或一个矩形的大小。它包含宽、高2个成员:width , height还有一个有用的面积函数area()。

4.2 用法

[cpp] view plaincopy
  1. cv::Size size(int w, int h);
  2. //或者
  3. cv::Size size;
  4. size.width = w;
  5. size.height = h;

4.3 示例代码

[cpp] view plaincopy
  1. // Size
  2. cv::Size size1(6,3);
  3. cv::Size size2;
  4. size2.width = 4;
  5. size2.height = 2;
  6. cv::Mat mat1(size1,CV_8UC1,cv::Scalar(0));
  7. cv::Mat mat2(size2,CV_8UC3,cv::Scalar(1,2,3));
  8. cout<<"mat1 = "<<endl<<mat1<<endl;
  9. cout<<endl<<"mat2 = "<<endl<<mat2<<endl;
  10. system("pause");

运行结果:

5. Rect类

5.1 基本概念

Rect是另一个用于定义2维矩形的模板类。它由两个参数定义:

  • 矩形左上角坐标: (x,y)
  • 矩形的宽和高: width, height

Rect可以用来定义图像的ROI区域。

5.2 用法

[cpp] view plaincopy
  1. cv::Rect rect(x, y, width, height);

5.3 示例代码

[cpp] view plaincopy
  1. // Rect
  2. cv::Mat pImg = imread("Lena.jpg",1);
  3. cv::Rect  rect(180,200,200,200);//(x,y)=(180,200),w=200,height=200
  4. cv::Mat  roi = cv::Mat(pImg, rect);
  5. cv::Mat  pImgRect = pImg.clone();
  6. cv::rectangle(pImgRect,rect,cv::Scalar(0,255,0),2);
  7. cv::imshow("original image with rectangle",pImgRect);
  8. cv::imshow("roi",roi);
  9. cv::waitKey();

运行结果:

6. RotatedRect类

6.1 基本概念

最后一个基本数据类是一种特殊的矩形称为RotatedRect。这个类通过中心点,宽度和高度和旋转角度来表示一个旋转的矩形。

6.2 用法

旋转矩形类的构造函数:

[cpp] view plaincopy
  1. RotatedRect(const Point2f& center, const Size2f& size, float angle);

参数:

  • center:中心点坐标Point2f类型
  • size:矩形的宽度和高度,Size2f类型
  • angle:顺时针方向的旋转角度(单位°),float类型

6.3 示例代码

[cpp] view plaincopy
  1. //RotatedRect
  2. cv::Point2f center(100,100);
  3. cv::Size2f size(100,50);
  4. float angle = 45;// try 10, 30, 45
  5. RotatedRect rRect(center, size,  angle);
  6. cv::Mat image(200,200,CV_8UC3,cv::Scalar(0));
  7. Point2f vertices[4];
  8. rRect.points(vertices);
  9. for (int i = 0; i < 4; i++)
  10. line(image, vertices[i], vertices[(i+1)%4], Scalar(0,255,0));
  11. Rect brect = rRect.boundingRect();
  12. rectangle(image, brect, Scalar(255,0,0));
  13. imshow("rectangles", image);
  14. waitKey(0);

运行结果:

angle = 10, 30, 45

转载请注明出处(本文更新链接):http://blog.csdn.net/iracer/article/details/51292349

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iracer/article/details/51292349

OpenCV—基本数据结构与示例相关推荐

  1. Python机器视觉编程常用数据结构与示例

    Python机器视觉编程常用数据结构与示例 本文总结了使用Python进行机器视觉(图像处理)编程时常用的数据结构,主要包括以下内容: 数据结构 通用序列操作:索引(indexing).分片(slic ...

  2. OpenCV实战(2)——OpenCV核心数据结构

    OpenCV实战(2)--OpenCV核心数据结构 0. 前言 1. cv::Mat 数据结构 1.1 cv::Mat 简介 1.2 cv::Mat 属性 1.3 完整代码示例 2. 探索 cv::M ...

  3. pythonopencv算法_python opencv之分水岭算法示例

    本文介绍了python opencv之分水岭算法示例,分享给大家,具体如下: 目标 使用分水岭算法对基于标记的图像进行分割 使用函数cv2.watershed() 原理: 灰度图像可以被看成拓扑平面, ...

  4. cv python 样例_【CV实战】OpenCV—Hello world代码示例

    简介OpenCV OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数 ...

  5. pythonopencv算法_python opencv之SURF算法示例

    本文介绍了python opencv之SURF算法示例,分享给大家,具体如下: 目标: SURF算法基础 opencv总SURF算法的使用 原理: 上节课使用了SIFT算法,当时这种算法效率不高,需要 ...

  6. python pyqt5图片(QPixmap)和opencv图片数据结构相互转换

    python pyqt5图片(QPixmap)和opencv图片数据结构相互转换 在python中使用pyqt5和opencv混合编程时,有时需要两种图片数据结构的相互转换.网上比较多的是把openc ...

  7. 【01】OpenCV模块架构介绍+示例程序演示

    本系列文章是基于Windows下,结合Visual Studio2017和OpenCV4.7进行编写,使用C++代码进行演示. 目录 1.OpenCV模块架构 2.示例程序效果展示 2.0创建工程 2 ...

  8. opencv图像处理常用完整示例代码总结

    显示图像 #include "StdAfx.h" #include <string> #include <iostream> #include <op ...

  9. opencv双目相机标定-示例代码分析

      在这里我使用的是Learning OpenCV3的示例,本节使用的项目代码可以在这里下载到. 一.运行示例   在下载完整个工程以后,按照工程使用说明,下载配置Opencv,运行VS2019项目即 ...

最新文章

  1. Visual C++ 2012/2013的内存溢出检測工具
  2. RabbitMQ学习总结(7)——Spring整合RabbitMQ实例
  3. APPlication,Session和Cookie的区别
  4. 【pmcaff】 会员原创讨论贴:互联网产品部-如此的羁绊
  5. C++中运算符重载的方法
  6. pytorch基础知识整理(四) 模型
  7. QString之simplified()含义
  8. python多线程有用吗_Python多线程理解
  9. 信息学奥赛一本通 1233:接水问题 | 1950:【10NOIP普及组】接水问题 | OpenJudge NOI 1.9 15 | 洛谷 P1190 [NOIP2010 普及组] 接水问题
  10. javafx做的天气预报小程序
  11. 工具(1)---wireshark抓包
  12. android自定义控件动态,GitHub - itrenjunhua/WaveView: Android自定义控件实现动态百分比水波纹效果...
  13. poj 1743 Musical Theme【后缀自动机】
  14. qml实现雪花飘落,快来给你的暑假降降温吧
  15. java输入、输出流的简单入门
  16. “剑走偏锋”之CAD的正多边形转化成标准圆
  17. elcipse开发android locat一会显示一会消失的问题
  18. code405是什么意思_HTTP协议状态码详解(HTTP Status Code)
  19. 云计算是互联网和计算机技术发展的产物,云计算 是传统计算机和网络技术发展融合的产物,它意味着计算能力也可作为一种商品通过互联网进行流通 。...
  20. 斐波那契数列(经典兔子繁殖问题)

热门文章

  1. boost::regex模块用于测试特定于语言环境的表达式的帮助程序类
  2. boost::mpl模块实现erase相关的测试程序
  3. boost::mp11::mp_copy_if相关用法的测试程序
  4. boost::log::ipc::reliable_message_queue用法的测试程序
  5. boost::graph模块实现分布式压缩稀疏行图类型的测试
  6. GDCM:输出DataSet的测试程序
  7. Boost:标准地图比较的测试程序
  8. Boost:将自定义占位符_1复制到arg <1>的测试程序
  9. VTK:Snippets之SaveSceneToFile
  10. OpenCV相机位移引起的单应性的实例(附完整代码)