opencv 轮廓提取
来源:互联网 发布:企业注册域名 编辑:程序博客网 时间:2024/06/05 08:09
轮廓指的是将连续的点连接在一起的曲线,具有相同的灰度值或颜色,提取轮廓就是提取这些具有相同颜色或灰度值的曲线
寻找轮廓应该用二值图,这样更明显
findcontours会改变原图,应该用copyto保存原图
查找轮廓应该是在黑色背景中找到白色物体
一:轮廓查找函数findContours( InputOutputArray image, OutputArrayOfArrays contours,int mode, int method, Point offset=Point());
第一个参数是输入的二值图
第二个参数是检测到的轮廓(vector<<vector>Point>contours),第一个<>里面的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<counters.size();i++)
{
drawcounters(tempImage,counters,i,Scalar(0,0,255))//这个效果相当于循环counters.size()次每次绘制第i个图像,及绘制所有轮廓
}
第四个参数是绘制轮廓的线性颜色
三:轮廓个数读取
cout<<"轮廓个数"<<contours.size()<<endl;
由于vector是向量,.size()表示的是向量的个数,而外层的vector表示的是所有轮廓信息,及counter.size()保存的是轮廓个数
内层的vector向量保存的是单个轮廓的点信息,那么counters[i].size()表示的是单个轮廓的信息,及单个轮廓点的个数
四:轮廓访问
for(int i=0;i<counters.size();i++)//counters.size()表示的是轮廓的个数,counters相当于一个二维数组
{
for(int j=0;j<counters[i].size();j++)//counters[i].size()表示的是第i个轮廓所包含点的个数
{
circle(img,Point(counters[i][j].x,counter[i][j].y,100,Scalar(0,0,255))//counters[i][j]是第i个轮廓的第j个点,counters相当于二维数组
)
}
}
代码
代码效果
- OpenCV轮廓提取
- 【opencv】轮廓提取
- opencv轮廓提取
- OpenCV轮廓提取
- opencv提取轮廓z
- OpenCV 轮廓提取
- opencv矩形轮廓提取
- opencv 轮廓提取
- opencv轮廓提取与轮廓拟合
- 利用OpenCV提取目标轮廓
- opencv学习心得六----轮廓提取
- opencv学习_9 (轮廓提取)
- opencv之图像轮廓提取
- 提取轮廓函数 cvFindContours ---OpenCV
- OpenCV提取图像轮廓总结
- opencv——提取轮廓
- OpenCV函数cvFindContours轮廓提取
- opencv学习_9 (轮廓提取)
- Android WebView与 JS 交互方式
- zookeeper集群部署问题
- virtualbox虚拟机里面最顶部没有控制、设置和帮助等选项
- 在Windows系统下搭建ELK日志分析平台(ElasticSearch、Logstash和Kiabana)
- 从MOSSE到KCF,核化相关滤波器的历程
- opencv 轮廓提取
- 存储过程语法及实例
- 关于spring 的bean 装配
- FFMPEG学习【组件文档——实用程序(Utilities)】
- 表单重复提交
- 用于高光谱图像分类的深度卷积神经网络
- MyBatis的动态SQL的模糊查询
- 神经网络超参数影响
- 面向对象(三)——友元函数和友元类