Opencv plus unity (плагин магазина активов) - PullRequest
0 голосов
/ 04 ноября 2019

Мне нужно найти «ConvexityDefects», используя ConvexHull. На данный момент мой код использует плагин «https://assetstore.unity.com/packages/tools/integration/opencv-plus-unity-85928" unity»

В настоящее время я не могу передать массив точек в «ConvexityDefects». «функция принимает второй параметр как целое число [] и не может преобразовать массив Point в Integer.

Ошибка, которую я получаю:« Ошибка CS1503: аргумент 2: невозможно преобразовать из OpenCvSharp.Point [] 'to' System.Collections.Generic.IEnumerable '"

          Point[] hull;
          Point[][] contours;
          for (int i = 0; i < contours.Length; i++)
          {


           hull =  Cv2.ConvexHull(contours[i], false);
           defects =  Cv2.ConvexityDefects(contours[i], hull);
               Cv2.DrawContours(frame, new Point[][] { hull }, (int)largestContour, new OpenCvSharp.Scalar(0, 0, 255), 2);
          }

Ответы [ 2 ]

0 голосов
/ 13 ноября 2019

@ Луи Гарчински ниже - форматированный код

    Point[][] contours;
    Point[]  hull;
   for (int i = 0; i < contours.Length; i++)
    {
      hull = Cv2.ConvexHull(contours[i], false);
      for (int k = 0; k < hull.Length; k++) 
        {
             Debug.Log("jihjib" + hull[k]); 
            defects = Cv2.ConvexityDefects(contours[i], InputArray.Create(hull) ); 
        }
    }
0 голосов
/ 05 ноября 2019

Ну, точка и int различаются, поэтому массив точек и массив int одинаково различаются.

OpenCV часто использует InputArray для передачи больших объемов данных в графический процессор. Вам необходимо создать входной массив, используя его метод Create и выбранный вами контурный массив. Если вы хотите оптимизировать свой код, вы можете использовать один и тот же массив для каждого контура, но это зависит от вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...