Ошибка findHomography OpenCV

#java #opencv

#java #opencv

Вопрос:

Я работаю над проектом OpenCV на Java, в котором мне нужно будет преобразовать эллипс в координаты окружности на разных изображениях. Я делаю это с помощью функции findHomograpghy(), поскольку эллипс содержит исходные точки, которых больше 4. В настоящее время у меня есть Mat, который содержит точки эллипса, а также другой Mat, который содержит точки окружности. На изображении обнаружен эллипс. Круг создается с помощью Imgproc.circle().

Я в основном делаю следующее:

 MatOfPoint source_mop = new MatOfPoint(blue_ellipse_contour);
MatOfPoint2f source_points = new MatOfPoint2f(source_mop.toArray());

MatOfPoint dest_mop = new MatOfPoint(cir_contour);
MatOfPoint2f dest_points = new MatOfPoint2f(dest_mop.toArray());  
  

Где blue_ellipse_contour и cir_contour представляют собой заполненный эллипс и круг.

Размеры source_points и dest_points немного отличаются 1×3972 1×3976

Я делаю следующее:

 Mat perspectiveMatrix = calib3d.findHomography(source_points,dest_points);
  

Однако это возвращает:

Ошибка OpenCV: ошибка утверждения (src.checkVector (2) == dst.checkVector (2)) в findHomography

Я предполагаю, что это как-то связано с тем, что размер не одинаков. Однако в настоящее время я немного запутался, как на самом деле найти матрицу преобразования из эллипса в круг? Поскольку размер и положение эллипса будут отличаться на разных изображениях.

Любые советы будут оценены по достоинству 🙂

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

1. Пожалуйста, опубликуйте минимальный, но полный код и набор данных, чтобы воспроизвести эту проблему?

2. Спасибо за поддержку, но у меня вроде получилось. Я изменил размер круга, чтобы он соответствовал размеру эллипса, и теперь ошибки нет 🙂

3. Круто, один запрос: Вы можете уточнить вопрос, чтобы предоставить полную информацию и добавить свой собственный ответ. Это улучшит качество вашего вопроса, добавит правильный ответ и, надеюсь, поможет всем, кто сталкивается с этой проблемой.

4. Я обязательно сделаю это, когда сам усовершенствую его 🙂