雷霆万钧 杜兰特

OpenCV中文網站

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 安裝 配置
查看: 17515|回復: 11
打印 上一主題 下一主題

如何提取輪廓上每個點的坐標?

[復制鏈接]
跳轉到指定樓層
1#
發表于 2013-11-1 21:02:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我已經用cvfindcontours函數提取了圖像的輪廓,我想要提取輪廓上每個點的坐標,然后求到質心的距離,以此求圖像的波谷,求大神解答,最好詳細點。謝謝。
分享到:  QQ好友和群QQ好友和群
收藏收藏
回復

使用道具 舉報

2#
發表于 2013-11-4 13:12:44 | 只看該作者
里面的contour數組不是保存的,像素點的坐標
回復 支持 反對

使用道具 舉報

3#
發表于 2014-9-2 18:42:20 | 只看該作者
麻煩二樓給科普一下吧,我這也頭疼呢。要得到輪廓各點的坐標,應該如何做?
回復 支持 反對

使用道具 舉報

4#
發表于 2014-10-1 07:10:46 | 只看該作者
問題已得到解決!在Opencv里寫一個函數,和畫圖函數一致就可以了。在參數中加一個數組進去,讓它把坐標寫在數組里就可以解決問題。很不錯的。
回復 支持 反對

使用道具 舉報

5#
發表于 2014-12-17 18:13:54 | 只看該作者
麻煩四樓告訴怎么求的
回復 支持 反對

使用道具 舉報

6#
發表于 2015-1-28 17:59:45 | 只看該作者
同求
回復 支持 反對

使用道具 舉報

7#
發表于 2016-4-7 10:16:16 | 只看該作者
wrxljf 發表于 2014-10-1 07:10
問題已得到解決!在Opencv里寫一個函數,和畫圖函數一致就可以了。在參數中加一個數組進去,讓它把坐標寫在 ...

大神,能告訴小白,求輪廓坐標點的代碼嗎
回復 支持 反對

使用道具 舉報

8#
發表于 2016-6-4 20:36:24 | 只看該作者
wrxljf 發表于 2014-10-1 07:10
問題已得到解決!在Opencv里寫一個函數,和畫圖函數一致就可以了。在參數中加一個數組進去,讓它把坐標寫在 ...

能分享下代碼嗎    不太知道怎么弄   多謝了
回復 支持 反對

使用道具 舉報

9#
發表于 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.              }   
復制代碼
回復 支持 反對

使用道具 舉報

10#
發表于 2016-6-14 14:00:14 | 只看該作者
學習學習。。。。。。。。。。。。。。。。。。。。
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|OpenCV中文網站  

GMT+8, 2019-12-18 03:13 , Processed in 0.042927 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
雷霆万钧 杜兰特 8973916998339152279861450994353668145831419631525071116024041257116540372085386894931809627971303529 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();