Как изменить данные для вырезания с помощью OpenCV?

#java #android #opencv #opencv3.0

#java #Android #opencv #opencv3.0

Вопрос:

Я создаю приложение для Android с opencv, которое включает в себя вырезание изображений вручную, и у меня возникла проблема. Я восстанавливаю точки, которые пользователь делает рукой на экране, а затем накладываю маску на исходное изображение, чтобы получить ту часть, которую хочет пользователь. Меня беспокоит то, что, когда пользователь неправильно завершает рисование, в итоге может получиться большая линия, которая идет от последней точки к первой. Я хотел бы, как snapchat, иметь возможность выполнять вырезание, не полностью следуя пути пользователя, а обводя его путь.

На данный момент я использую следующие функции :

         Imgproc.fillPoly(mask,pts,new Scalar(255,255,255,255));
        Core.bitwise_and(img, mask, dst);
  

точки — это точки, которые пользователь отправляет после построения графика.
img — это базовое изображение
пример

Комментарии:

1. Можете ли вы подробнее рассказать о том, как это должно вести себя для различных входных форм? например, что, если пользователь выделит форму C или E и получит начальную и конечную точки довольно близко друг к другу? В текущем примере, возможно, выпуклая оболочка была бы достойной отправной точкой…

2. Да, это то, что я искал, спасибо!