1

初めての質問です、読んでいただきありがとうございます。

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

h_next と v_next の使い方を示す素敵なチュートリアルを見つけました

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

問題は、IplImage ではなく Mat を使用していることです。

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

マット*オイム; IplImage img = *oimg;

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

また、Mat で動作するように構築された ussign findContours も試しました。

階層を通過しましたが、うまくいきませんでした。

私はC++とOpenCV2.0を使用しています

おかげさまで、

タミール。

4

1 に答える 1

3

を に変換して C API を使用する代わりにcv::MatIplImageC++ バージョンのcvFindContours():を直接使用することをお勧めします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);

解釈方法の説明については、 C++ API ドキュメントを確認してくださいhierarchy(強調は私のものです)。

hiararchy – イメージ トポロジに関する情報を含むオプションの出力ベクトル。輪郭の数と同じ数の要素があります。各輪郭の輪郭[i] について、要素 hierarchy[i][0] 、hiarchy i、hiearchy[i][2] 、hiearchy[i][3]は、次の輪郭の0ベースのインデックスに設定され、同じ階層レベルの以前の輪郭、それぞれ最初の子輪郭と親輪郭。一部の輪郭 i について、次、前、親、またはネストされた輪郭がない場合、hierarchy[i] の対応する要素は負になります。

同じコードベースで C と C++ API を切り替えると、読みやすさが大幅に低下します。必要な機能が C++ API にない場合は、C API のみを使用することをお勧めします。

于 2011-07-09T18:13:25.010 に答える