2016-05-09 9 views
1

私はopencvを使って作業中のC++プログラムを持っており、その一部は画像内の単語全体の輪郭を探しています。Opencv xamarin findContours - 階層の使い方

私はこの作業をC++コード

vector<cv::Vec4i> hierarchy; 
cv::findContours(connected, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0)); 
for (int i = 0; i >= 0; i = hierarchy[i][0]) 
    { 
     ... 
    } 

私はOpenCVののJavaバージョンを使用して、Android上でで実行するようにxamarin使用してC#にこのコードを変換しようとしています。問題は、ループのために同じものを作成する方法を知らないということです。私が持っているもの

は次のとおりです。

JavaList<MatOfPoint> contours = new JavaList<MatOfPoint>(); 
Mat hierarchy = new Mat(); 
Imgproc.FindContours(connected, contours, hierarchy, Imgproc.RetrCcomp, Imgproc.ChainApproxSimple, new Point(0, 0)); 

私はここでループのために同じことを書くのですか? 私は輪郭の2レベルの階層を使用しています。なぜなら、私は穴ではなく輪郭が必要なのです。

+0

http://docs.opencv.org/3.1.0/d9/d8b/tutorial_py_contours_hierarchy.html#gsc.tab=0 これは階層を説明し、なぜこのforループはそのように機能するのですか –

答えて

1

誰かがこれに対する答えを必要とする場合、私はそれをしばらく前に考え出しましたが、投稿する時間はありませんでした。これは誰かに役立ちますhttp://docs.opencv.org/3.1.0/d9/d8b/tutorial_py_contours_hierarchy.html#gsc.tab=0

希望:あなたがここにesplainationを理解した後は非常に簡単であることが判明し

for(int i = 0; i >= 0;) 
    { 
     ... 
     double[] contourInfo = hierarchy.Get(0, i); 
     i = (int)contourInfo[0]; // this gives next sibling 
    }