findHomography + перспектива преобразования -> превышает целевое значение Rect

Я разрабатываю с Python, с NumPy и OpenCV (3.1.0).

У меня есть массив SRC 2D точек, которые я хочу деформировать в прямоугольную область.

SRC.T = array([[209 210 239 274 307 337 366 404 427 461 484 489 493]
               [330 309 339 304 310 332 353 311 348 324 337 317 296]])

Я рассчитал требуемую гомографию (H) следующим образом:

H, _ = findHomography(rect_src, rect_dst)

Куда:

rect_src = array([[209, 282], [209, 330], [484, 337], [493, 296]])
rect_dst = array([[209, 296], [209, 353], [493, 353], [493, 296]])

Я получил следующую матрицу гомографии (которую я проверял вручную, это имеет смысл..):

H = [[  5.81755130e-01  -1.21849288e-01   7.21264687e+01]
     [ -1.46583486e-01   6.99605042e-01   5.90321609e+01]
     [ -3.49962434e-04  -5.83010949e-04   1.00000000e+00]]

Затем я деформировал точки SRC с помощью приведенной выше матрицы гомографии, надеясь, что все точки SRC будут использовать область rect_dst:

DST = perspectiveTransform(SRC, H).astype(int)

Я получил следующие очки DST:

DST.T = array([[209 209 236 267 299 330 363 397 429 462 493 493 493]
               [353 327 363 318 324 351 378 320 370 335 353 324 296]])

К сожалению, точки DST превышают область rect_dst, поэтому я не получил желаемого результата...

Ниже приведено изображение отладки, где точки SRC выделены синим, а точки DST - желтым (не обращайте внимания на красные и зеленые точки):

отладочное изображение

Подскажите пожалуйста, где я ошибся и как получить нужную функцию?

Спасибо, Шахар

0 ответов

Другие вопросы по тегам