opencv 轮廓提取

您所在的位置:网站首页 opencv轮廓提取转为轨迹 opencv 轮廓提取

opencv 轮廓提取

2023-07-18 22:27| 来源: 网络整理| 查看: 265

轮廓指的是将连续的点连接在一起的曲线,具有相同的灰度值或颜色,提取轮廓就是提取这些具有相同颜色或灰度值的曲线

寻找轮廓应该用二值图,这样更明显

findcontours会改变原图,应该用copyto保存原图

查找轮廓应该是在黑色背景中找到白色物体

一:轮廓查找函数findContours( InputOutputArray image, OutputArrayOfArrays contours,int mode, int method, Point offset=Point());

第一个参数是输入的二值图

第二个参数是检测到的轮廓(vectorcontours),第一个里面的vector是一个轮廓所有点的向量数组,外面的vector是检测到的所有轮廓向量(以单个轮廓作为向量元素)

第三个参数是 轮廓检索模式

CV_RETR_EXTERNAL=0-----表示只检测最外层轮廓--常用 CV_RETR_LIST=1------提取所有轮廓并放置在list中, 轮廓不建立等级关系 CV_RETR_CCOMP=2------提取所有轮廓并组织为双层结构 CV_RETR_TREE=3------提取所有轮廓并重新建立网状轮廓结构

第四个参数是 轮廓近似方法

CHAIN_APPROX_NONE--常用--提取连续的轮廓线

 CHAIN_APPROX_SIMPLE--只显示线段端点

第五个参数是偏移量,可以不设置

二:轮廓绘制函数---drawContours(tempImage,contours,-1,Scalar(0,0,255),2,8);

drawContours( InputOutputArray image, InputArrayOfArrays contours,                               int contourIdx, const Scalar& color,                               int thickness=1, int lineType=8,                               InputArray hierarchy=noArray(),                               int maxLevel=INT_MAX, Point offset=Point() );

第一个参数是要绘制轮廓的图像,由于findContours会改变原图,所以这个绘制图像一般选择findContours前clone()的图像

第二个参数是轮廓信息

第三个参数若为负值则表示绘制所以轮廓,若为正数则表示 绘制第i个轮廓

for(int i=0;i

for(int j=0;j



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3