почему findchessboardcorners предоставляет мне значения с плавающей запятой? - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь вычислить углы шахматной доски, используя API openCV. Ниже приведен фрагмент кода.

leftImage = cv2.imread ("left.jpg")
retVal, detectedCorners = cv2.findChessboardCorners (leftImage, (7, 6))

Теперь detectCorners [0] дает следующие значения.

array([[ 475.44540405,  264.75949097]], dtype=float32)

Мой вопрос:

Как эти значения координат пикселей представлены в значении с плавающей запятой. Это должно было быть целое значение (x, y) на изображении?

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Тип результата правильный. Они могут решить float, чтобы получить более точные результаты. Как сказано в документации :

Точки изображения: Это вектор вектора Point2f , который для каждого входного изображения содержит координаты важных точек (углов для шахматной доски и центров кругов для кругового узора). Мы уже собрали это из функции findChessboardCorners или findCirclesGrid. Нам просто нужно передать его.

1 голос
/ 08 мая 2020

Я еще не вникал в код. Но я уверен, что OpenCV здесь использует углы Харриса и вычисляет местоположения субпикселей, как описано здесь

...