7

Xamarin を使用した Android ビルドで OpenCV を使用して、画像の輪郭を見つけようとしています (バージョンの詳細は以下を参照)。

以下のような疑似画像を使用している場合でも、FindCountours 関数で輪郭を返すことができません (リストは空です)。もう 1 つの問題は、階層オブジェクトに輪郭が 1 つあることです。

Windows で Python から実行すると機能します。

何が原因か誰か知っていますか?

       Mat aoiHsv = new Mat(new Size(80, 80), CvType.Cv8uc3);
        for (int i = 20; i < 40; i++)
        {
            for (int j = 20; j < 40; j++)
            {
                aoiHsv.Put(i,j, new byte[] {180, 255, 255});
            }
        }

        Mat mask = new Mat();

        OpenCV.Core.Core.InRange(aoiHsv, new Scalar(179, 255, 255), new Scalar(255, 255, 255), mask);

        // Find contours
        IList<MatOfPoint> contours = new List<MatOfPoint>();
        Mat hierachy = new Mat();
        Imgproc.FindContours(mask, contours, hierachy, Imgproc.RetrCcomp, Imgproc.ChainApproxNone);

バージョン情報:

  • OpenCV-3.1.0
  • Android 5.1 API 22

解決策が見つかりました: 等高線リストは JavaList でなければなりません。

IList<MatOfPoint> contours = new JavaList<MatOfPoint>();
4

0 に答える 0