如何提取轮廓上每个点的坐标?
我已经用cvfindcontours函数提取了图像的轮廓,我想要提取轮廓上每个点的坐标,然后求到质心的距离,以此求图像的波谷,求大神解答,最好详细点。谢谢。 里面的contour数组不是保存的,像素点的坐标 麻烦二楼给科普一下吧,我这也头疼呢。要得到轮廓各点的坐标,应该如何做?问题已得到解决!在Opencv里写一个函数,和画图函数一致就可以了。在参数中加一个数组进去,让它把坐标写在数组里就可以解决问题。很不错的。 麻烦四楼告诉怎么求的 同求
wrxljf 发表于 2014-10-1 07:10
问题已得到解决!在Opencv里写一个函数,和画图函数一致就可以了。在参数中加一个数组进去,让它把坐标写在 ...
大神,能告诉小白,求轮廓坐标点的代码吗 wrxljf 发表于 2014-10-1 07:10
问题已得到解决!在Opencv里写一个函数,和画图函数一致就可以了。在参数中加一个数组进去,让它把坐标写在 ...
能分享下代码吗 不太知道怎么弄 多谢了 可以參考這篇
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);
} 学习学习。。。。。。。。。。。。。。。。。。。。
页:
[1]
2