songbinxu 发表于 2013-11-1 21:02:34

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

我已经用cvfindcontours函数提取了图像的轮廓,我想要提取轮廓上每个点的坐标,然后求到质心的距离,以此求图像的波谷,求大神解答,最好详细点。谢谢。

lostage 发表于 2013-11-4 13:12:44

里面的contour数组不是保存的,像素点的坐标

wrxljf 发表于 2014-9-2 18:42:20

麻烦二楼给科普一下吧,我这也头疼呢。要得到轮廓各点的坐标,应该如何做?

wrxljf 发表于 2014-10-1 07:10:46

问题已得到解决!在Opencv里写一个函数,和画图函数一致就可以了。在参数中加一个数组进去,让它把坐标写在数组里就可以解决问题。很不错的。

hejinbiao 发表于 2014-12-17 18:13:54

麻烦四楼告诉怎么求的

aaa17106 发表于 2015-1-28 17:59:45

同求

吴荥荥77 发表于 2016-4-7 10:16:16

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

大神,能告诉小白,求轮廓坐标点的代码吗

lmfsola 发表于 2016-6-4 20:36:24

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

能分享下代码吗    不太知道怎么弄   多谢了

smallyouyou 发表于 2016-6-4 23:26:21

可以參考這篇
http://blog.163.com/qingyu_1984/blog/static/1444145032013014104222956/
mode = CV_RETR_LIST;
         contours_num=cvFindContours(preimg, storage, &contours, sizeof(CvContour), mode, CV_CHAIN_APPROX_NONE, cvPoint(0,0));                                          //-- contours_num 表示的是一共有多少条轮廓线
               for (;contours!=0;contours=contours->h_next)   //-- 指向下一个轮廓序列
       {
             这里遍历CvSeq里面的元素的方法很怪异   
                onetourlength = contour->total;   
                //给点数组分配空间,记得释放   
               CvPoint *points = (CvPoint *)malloc(sizeof(CvPoint) * onetourlength);   
               //printf("seqlength:%dn",seqlength);   
               CvSeqReader reader;       //-- 读其中一个轮廓序列
               CvPoint pt = cvPoint(0,0);   
               cvStartReadSeq(contour,&reader);       //开始提取   
               for(int i = 0 ;i < onetourlength; i++){   
                  CV_READ_SEQ_ELEM(pt,reader);   //--读其中一个序列中的一个元素点
                  points = pt;   
                  cvSeqPush(allpointsSeq,&pt);   
               }            
               //把这个轮廓点找出后,就可以用这些点画个封闭线   
                cvPolyLine(image,&points,&onetourlength,1,0,CV_RGB(0,255,0),2,8,0);   
             }   

小新-- 发表于 2016-6-14 14:00:14

学习学习。。。。。。。。。。。。。。。。。。。。
页: [1] 2
查看完整版本: 如何提取轮廓上每个点的坐标?