《cv中文参考手册-图像轮廓处理-结构分析与形状识别--外接正矩形轮廓区域》
2017-08-15 11:16
423 查看
在目标识别中我们首先要把感兴趣的目标提取出来,而一般常见的步骤都是通过颜色或纹理提取出目标的前景图(一幅黑白图像,目标以白色显示在图像中),接下来我们要对前景图进行分析进一步地把目标提取出来,而这里常常用到的就是提取目标的轮廓。OpenCV 里提取目标轮廓的函数是findContours,它的输入图像是一幅二值图像,输出的是每一个连通区域的轮廓点的集合:vector<vector<Point>>。外层vector的size代表了图像中轮廓的个数,里面vector的
size代表了轮廓上点的个数。下面我们通过实例来看函数的用法。提取到轮廓后,其实我们更关心的是如果把这些轮廓转换为可以利用的特征,也就是涉及到轮廓的描述问题,这时就有多种方法可以选择,比如矢量化为多边形、矩形、椭圆等。OpenCV里提供了一些这样的函数。
1、获取包围对象的垂直矩阵cv::Rect r0= cv::boundingRect(cv::Mat(contours[0]));
cv::rectangle(result,r0,cv::Scalar(0),2);
Calculates the up-right bounding rectangle of a point set.
C++: Rect boundingRect(InputArray points)
Python: cv2.boundingRect(points) →
retval
C: CvRect cvBoundingRect(CvArr* points,
int update=0 )
The function calculates and returns the minimal up-right bounding rectangle for the specified point set.
输入参数points是所要求最小外结矩的点集数组或向量.
cv::Rect r0= cv::boundingRect(cv::Mat(contours[0]));
cv::rectangle(result,r0,cv::Scalar(0),2);
// 轮廓表示为一个矩形
Rect r = boundingRect(Mat(contours[0])); //矩形
rectangle(result, r, Scalar(255), 2);
Mat srcImage(Size(500,500), CV_8UC3, Scalar(0));
vector <Point> points ;
Rect rect=boudingRect(points); //随机生成点集
rectangle(srcImage,rect,Scalar(0,255,0),2); 选择区域Rect
1)构造函数 Rect(x,y,width,height),x, y 为左上角坐标, width, height 则为长和宽。
2)方法 contain(Point) 可返回改点是否在矩形内。
3)方法 inside(Rect) 可返回该矩形是否在矩形内。
4)交集 Rect=Rect1&Rect2
5) 并集 Rect=Rect1|Rect2
6) 平移 RectShift=Rect+Point
7) 缩放 RectScale=Rect+Size
8) 利用对角线两点来画矩形:
void rectangle(Mat& img,
Point pt1,Point pt2,const Scalar& color,
int thickness=1, int lineType=8,
int shift=0)
9) 传入矩形参数来画矩形:
void rectangle(Mat& img,
Rect rec, const Scalar& color,
int thickness=1, int lineType=8,
int shift=0 )
size代表了轮廓上点的个数。下面我们通过实例来看函数的用法。提取到轮廓后,其实我们更关心的是如果把这些轮廓转换为可以利用的特征,也就是涉及到轮廓的描述问题,这时就有多种方法可以选择,比如矢量化为多边形、矩形、椭圆等。OpenCV里提供了一些这样的函数。
1、获取包围对象的垂直矩阵cv::Rect r0= cv::boundingRect(cv::Mat(contours[0]));
cv::rectangle(result,r0,cv::Scalar(0),2);
Calculates the up-right bounding rectangle of a point set.
C++: Rect boundingRect(InputArray points)
Python: cv2.boundingRect(points) →
retval
C: CvRect cvBoundingRect(CvArr* points,
int update=0 )
Parameters: |
---|
输入参数points是所要求最小外结矩的点集数组或向量.
cv::Rect r0= cv::boundingRect(cv::Mat(contours[0]));
cv::rectangle(result,r0,cv::Scalar(0),2);
// 轮廓表示为一个矩形
Rect r = boundingRect(Mat(contours[0])); //矩形
rectangle(result, r, Scalar(255), 2);
Mat srcImage(Size(500,500), CV_8UC3, Scalar(0));
vector <Point> points ;
Rect rect=boudingRect(points); //随机生成点集
rectangle(srcImage,rect,Scalar(0,255,0),2); 选择区域Rect
1)构造函数 Rect(x,y,width,height),x, y 为左上角坐标, width, height 则为长和宽。
2)方法 contain(Point) 可返回改点是否在矩形内。
3)方法 inside(Rect) 可返回该矩形是否在矩形内。
4)交集 Rect=Rect1&Rect2
5) 并集 Rect=Rect1|Rect2
6) 平移 RectShift=Rect+Point
7) 缩放 RectScale=Rect+Size
8) 利用对角线两点来画矩形:
void rectangle(Mat& img,
Point pt1,Point pt2,const Scalar& color,
int thickness=1, int lineType=8,
int shift=0)
9) 传入矩形参数来画矩形:
void rectangle(Mat& img,
Rect rec, const Scalar& color,
int thickness=1, int lineType=8,
int shift=0 )
相关文章推荐
- 《cv中文参考手册-图像轮廓处理-结构分析与形状识别-获取各个对象的质心》HuMoments
- 《cv中文参考手册-图像轮廓处理-结构分析与形状识别-外接轮廓》
- opencv结构分析与形状识别-轮廓检测和填充(连通区域-边缘与整个图像的目标)
- 图像结构分析与形状描述ImgProc ,cv::findcontours()
- Opencv 图像结构分析与形状识别—— drawContours函数用于绘制和填充
- 结构分析与形状识别(外接矩形 旋转角度)
- 图像处理中矩形标记图像中某一块区域matlab中rectangle函数介绍
- MySQL - MySQL 5.1参考手册 - 9.语言结构 - 9.2. 数据库、表、索引、列和别名 - 9.2.2. 识别符大小写敏感性
- 【Matlab图像处理】截取图像中的矩形区域(可不平行于坐标轴)并保存为图片
- InnoDB 中文参考手册 --- 13 出错处理
- InnoDB 中文参考手册 --- 11 表和索引结构
- 【OpenCV3图像处理】提取轮廓的凸包、外包矩形、最小外包矩形、最小外包圆
- OPENCV用户手册之图像处理部分(之一):梯度、边缘与角点(中文翻译)
- 码农干货系列【4】--图像识别之矩形区域搜索
- 数字图像处理 物体测量与形状分析
- OpenCV学习笔记(十四)——图像结构分析与形状描述ImgProc
- C# EmguCV图像处理截取矩形区域
- OPENCV用户手册之图像处理部分(之三):形态学操作(中文翻译)
- OpenCV截取图像的任意形状区域,规则的图形(圆、椭圆、矩形),不规则鼠标自己选择
- OPENCV用户手册之图像处理部分(之三):形态学操作(中文翻译)