查找轮廓并绘制

1、查找图像轮廓

void findContours(InputArray image,OutputArray contours,OutputArray hierarchy,int mode,int method,Point offset=Point())

参数一:八位单通道图像阵列

参数二:保存函数运算后的结果

参数三:hierarchy[i][0]~hierarchy[i][3]分别表示后一个轮廓、前一个轮廓、父轮廓、内嵌轮廓的索引编号,如果没有该选项则默认为-1

参数四:轮廓检索模式

RETR_EXTERNAL:只检测最外层轮廓,hierarchy[i][2]=hierarchy[i][3]=-1

RETR_LIST:提取所有轮廓,并且放在list中,轮廓间不建立 等级关系

RETR_CCMOP:提取所有轮廓,并且将其组织为双层结构:顶层为连通域的外围边界,次层为孔的内层边界

RETR_TREE:提取所有轮廓,并重新建立网状轮廓结构

参数五:轮廓近似办法

CHAIN_APPROX_NONE:获取每隔轮廓的每隔像素,相邻的两个像素位置差不超过1

CHAIN_APPROX_SIMPLE:压缩水平、垂直、对角元素,只保留该方向的终点坐标

CHAIN_APPROX_TC89L1

CHAIN_APPROX_TC89L_KCOS:使用teh-chinl链逼近算法中的一个

参数六:每隔轮廓点的可偏移量

2、绘制轮廓函数

void drawContours(InputArray dst,InputArray contours,int contourIdx,const Scalar &color,int thickness=1,int thicktype=8,InputArray hierarchy=noArray(),int maxLevel =INT_MAX,Point offset = Point() )

参数一:目标图像阵列(输出)

参数二:所有输入的轮廓,每隔轮廓存储一个点的向量

参数三:轮廓绘制指示变量,如果为负值则绘制所有轮廓

参数四:轮廓线的颜色

参数五:线的大小,可选FILLED填充轮廓内部

参数六:线的类型4,8,LINE_AA

参数七:可选层次结构信息

参数八:绘制轮廓的最大等级

参数九:轮廓的偏移量

pdf综合代码:

#include 
#include 
#include 

#define WINDOW_NAME1 "【原始窗口】"
#define WINDOW_NAME2 "【轮廓图】"
using namespace std;
using namespace cv;

Mat g_srcImage,g_grayImage;
int g_thresh = 80;
int g_thresh_max = 255;
RNG g_rng(12345);
Mat g_cannyMat_output;
vector< vector > g_vContours;
vector g_vHierarchy;

void on_Thresh_Change(int,void *);
int main(int argc,char * argv[])
{
	if(argc!=2)
	{
		cout<<"input error"<
--------------(来自opencv3入门编程 毛星)

你可能感兴趣的:(学习笔记,计算机视觉,Opencv)