ホーム>source

私はhttps://github.com/shimat/opencvsharp C#でopencvを使用するラッパー。

実際に、私の国の最大の境界ボックスを取得したいと思います。 傾きは関係ありません。完璧なストレートボックスを取得したいと思います。

輪郭を見つけた後の実際の結果は次のようになります。

これは私のコードです:

 Mat src = new Mat("index.jpg", ImreadModes.GrayScale);
  // Mat src = Cv2.ImRead("lenna.png", ImreadModes.GrayScale);
  Mat dst = new Mat();
  Mat dst2 = new Mat();
  Cv2.Canny(src, dst, hScrollBar1.Value, hScrollBar2.Value);
  //using (new Window("src image", src)) ;
  //using (new Window("dst image", dst)) ;
  // Find contours
  OpenCvSharp.Point[][] contours; //vector<vector<Point>> contours;
  HierarchyIndex[] hierarchyIndexes; //vector<Vec4i> hierarchy;
  Cv2.FindContours(dst, out contours, out hierarchyIndexes, RetrievalModes.External, ContourApproximationModes.ApproxSimple);
  using (new Window("dst image", dst)) ;

関数BoundingRectがあることを見ました

Cv2.BoundingRect()

私にとって正しい音。ただし、この関数にはcurveという名前のInputArrayが必要です。 私は少し自白しています。

誰かが私にヒントを与えることができれば素晴らしいでしょう。

ありがとう

あなたの答え
  • 解決した方法 # 1

    自分で解決策を立ててください。

    var biggestContourRect = Cv2.BoundingRect(contours[0]);
            Cv2.Rectangle(dst,
                new OpenCvSharp.Point(biggestContourRect.X, biggestContourRect.Y),
                new OpenCvSharp.Point(biggestContourRect.X + biggestContourRect.Width, biggestContourRect.Y + biggestContourRect.Height),
                new Scalar(255, 255, 255),2);
    
    

    仕事をしてください:)

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ c - mutexロック内でsleep()を呼び出すことの欠点は何ですか?