opencv 轮廓提取 |
您所在的位置:网站首页 › opencv轮廓提取转为轨迹 › opencv 轮廓提取 |
轮廓指的是将连续的点连接在一起的曲线,具有相同的灰度值或颜色,提取轮廓就是提取这些具有相同颜色或灰度值的曲线 寻找轮廓应该用二值图,这样更明显 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 |