#python #numpy #opencv #video-processing
#python #numpy #opencv #обработка видео
Вопрос:
Я хочу использовать функцию estimateRigidTransform в OpenCV, но она выдает ошибку.
Трассировка ошибки атрибута (последний последний вызов) в 30 31 # Найти матрицу преобразования —> 32 m = cv2.estimateRigidTransform(prev_pts, curr_pts, fullAffine = False) # будет работать только с OpenCV-3 или менее 33 34 # Извлечь передачу
Ошибка атрибута: модуль ‘cv2.cv2’ не имеет атрибута ‘estimateRigidTransform’
моя версия OpenCV — 4.0.0.
Ответ №1:
Как указано в документации estimateRigidTransform
, эта функция устарела:
Устаревший: вместо этого используйте cv ::estimateAffine2D, cv ::estimateAffinePartial2D. Если вы используете эту функцию с изображениями, извлеките точки с помощью cv::calcOpticalFlowPyrLK, а затем используйте функции оценки.
cv::estimateAffine2D
должно быть более устойчивым к шуму, но более дорогостоящим в вычислительном отношении, чем cv::estimateAffinePartial2D
. Они аналогичны estimateRigidTransform
с fullAffine
параметром, установленным в true
или false
, соответственно.
Комментарии:
1. new_t = cv2.estimateRigidTransform(img, anchor, fullAffine=False), где размер привязки = (1280, 1920) и размер img = (1280, 1920) не работает. Я заменяю estimageRigidTransofrm на estimateAffice2d(img, anchor) и получаю эту ошибку cv2.ошибка: OpenCV(4.1.2) / io/ opencv /modules/calib3d /src /ptsetreg.cpp:831: ошибка: (-215: ошибка утверждения) count >= 0 amp;amp; to.checkVector(2) == подсчет в функции ‘estimateAffine2D’ Как внести исправления?