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 - желтым (не обращайте внимания на красные и зеленые точки):
Подскажите пожалуйста, где я ошибся и как получить нужную функцию?
Спасибо, Шахар