OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 17424|回复: 11

如何提取轮廓上每个点的坐标?

[复制链接]
发表于 2013-11-1 21:02:34 | 显示全部楼层 |阅读模式
我已经用cvfindcontours函数提取了图像的轮廓,我想要提取轮廓上每个点的坐标,然后求到质心的距离,以此求图像的波谷,求大神解答,最好详细点。谢谢。
回复

使用道具 举报

发表于 2013-11-4 13:12:44 | 显示全部楼层
里面的contour数组不是保存的,像素点的坐标
回复 支持 反对

使用道具 举报

发表于 2014-9-2 18:42:20 | 显示全部楼层
麻烦二楼给科普一下吧,我这也头疼呢。要得到轮廓各点的坐标,应该如何做?
回复 支持 反对

使用道具 举报

发表于 2014-10-1 07:10:46 | 显示全部楼层
问题已得到解决!在Opencv里写一个函数,和画图函数一致就可以了。在参数中加一个数组进去,让它把坐标写在数组里就可以解决问题。很不错的。
回复 支持 反对

使用道具 举报

发表于 2014-12-17 18:13:54 | 显示全部楼层
麻烦四楼告诉怎么求的
回复 支持 反对

使用道具 举报

发表于 2015-1-28 17:59:45 | 显示全部楼层
同求
回复 支持 反对

使用道具 举报

发表于 2016-4-7 10:16:16 | 显示全部楼层
wrxljf 发表于 2014-10-1 07:10
问题已得到解决!在Opencv里写一个函数,和画图函数一致就可以了。在参数中加一个数组进去,让它把坐标写在 ...

大神,能告诉小白,求轮廓坐标点的代码吗
回复 支持 反对

使用道具 举报

发表于 2016-6-4 20:36:24 | 显示全部楼层
wrxljf 发表于 2014-10-1 07:10
问题已得到解决!在Opencv里写一个函数,和画图函数一致就可以了。在参数中加一个数组进去,让它把坐标写在 ...

能分享下代码吗    不太知道怎么弄   多谢了
回复 支持 反对

使用道具 举报

发表于 2016-6-4 23:26:21 | 显示全部楼层
可以參考這篇
http://blog.163.com/qingyu_1984/ ... 032013014104222956/
  1. mode = CV_RETR_LIST;  
  2.          contours_num=cvFindContours(preimg, storage, &contours, sizeof(CvContour), mode, CV_CHAIN_APPROX_NONE, cvPoint(0,0));                                          //-- contours_num 表示的是一共有多少条轮廓线
  3.                for (;contours!=0;contours=contours->h_next)     //-- 指向下一个轮廓序列
  4.        {
  5.              这里遍历CvSeq里面的元素的方法很怪异   
  6.                 onetourlength = contour->total;   
  7.                 //给点数组分配空间,记得释放   
  8.                CvPoint *points = (CvPoint *)malloc(sizeof(CvPoint) * onetourlength);   
  9.                //printf("seqlength:%dn",seqlength);   
  10.                CvSeqReader reader;       //-- 读其中一个轮廓序列
  11.                CvPoint pt = cvPoint(0,0);   
  12.                cvStartReadSeq(contour,&reader);       //开始提取   
  13.                for(int i = 0 ;i < onetourlength; i++){   
  14.                     CV_READ_SEQ_ELEM(pt,reader);     //--读其中一个序列中的一个元素点
  15.                     points[i] = pt;   
  16.                     cvSeqPush(allpointsSeq,&pt);   
  17.                  }              
  18.                //把这个轮廓点找出后,就可以用这些点画个封闭线   
  19.                 cvPolyLine(image,&points,&onetourlength,1,0,CV_RGB(0,255,0),2,8,0);   
  20.              }   
复制代码
回复 支持 反对

使用道具 举报

发表于 2016-6-14 14:00:14 | 显示全部楼层
学习学习。。。。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-12-13 05:20 , Processed in 0.045405 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表