2011-07-09 16 views
1

これは私の最初の質問です。読んでいただきありがとうございます。OpenCV:ネストされた等高線の数

私は輪郭の内側の輪郭の数を数えようとしています。

私はh_next使用方法を示す素敵なチュートリアルを発見し、

http://jmpelletier.com/a-simple-opencv-tutorial/

v_next問題は、私はマットではなくIplImageへの使用です。

私はそれを変換しようとした:oimg *

マット。 IplImage img = * oimg;

しかし、cvFindContoursを呼び出すときにエラーが発生します。

私はまたhierrarchyを経てマット、

で動作するように構築されていusign findContoursを試してみましたが、それは仕事をdidntの。

私は、

おかげで充てる

タミールをC++とOpenCV2.0をusignよ。代わりに、CのAPIを使用するためにcv::MatIplImageへの変換の

+0

キャスティングを使用します。 iplimage * p; p =&((iplimage)行列) – DanielHsH

答えて

3

、私は直接cvFindContours()のC++バージョン使用することをお勧め:cv::findContours()を。代わりに、真のツリーデータ構造を構築する、それが平らに2つのベクトルに格納されます。

cv::Mat image = // ... 
std::vector<std::vector<cv::Point> > contours; 
std::vector<cv::Vec4i> hierarchy; 
cv::findContours(image, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_NONE); 

チェックhierarchy(強調鉱山)を解釈する方法については、C++ API documentation

hiararchy - オプションの出力ベクトル には、画像トポロジ に関する情報が含まれます。それは の数として多くの要素を とします。各輪郭輪郭のために[I] 、要素の階層[I] [0]、 hiearchy i、hiearchy [3] に設定する[I] [I] [2]、 hiearchyに インデックスを0ベース同様の 階層レベルの次の輪郭と、最初の子 輪郭と、親輪郭である 以前の輪郭のそれぞれの輪郭は、それぞれ である。一部の輪郭のために私は次何ある 場合、以前、親または ネストされた輪郭、階層の対応 要素[i]が 負

同じコードベースにCとC++ APIの切り替え

ないであろう本当に読みにくいです。必要な機能がC++ APIにない場合は、C APIのみを使用することをお勧めします。

関連する問題