Утро!
Я пытаюсь получить координаты (x, y углов) двух изображений, которые были успешно сопоставлены с помощью ORB и сшиты вместе с помощью cv2.warpPerspective.
Я попробовал это, рассчитав гомографию (cv2.findHomography) из двух совпадающих пар ORB.
Однако я изо всех сил пытаюсь получить координаты углов каждого изображения после того, как они были сшиты.
Любая помощь будет здорово.
р
Это код, который я запускаю в данный момент, но я в недоумении. Даже не уверен, что это правильный подход
matchess = np.asarray(good)
if len(good)>500: # the number here is the number of matches deemed good
src_pts = np.float32([kp1[m.queryIdx].pt for m in matchess[:,0] ]).reshape(-1,1,2)
dst_pts = np.float32([kp2[m.trainIdx].pt for m in matchess[:,0] ]).reshape(-1,1,2)
H, masked = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)
pts = np.float32([[0,0],[0,-1],[-1,-1],[-1,0]]).reshape(-1,1,2)
dst = cv2.perspectiveTransform(pts,H)
dst = cv2.warpPerspective(img1,H,(img2.shape[1] + img1.shape[1], img2.shape[0])) #wraped image
print("dst 1:", dst)
dst[0:img2.shape[0], 0:img2.shape[1]] = img2 #stitched image
print("dst 2:",dst)
spectiveTransform() — это используемая функция.
Дайте ему очки и либо H
, либо перевернутый H
. Он применит омографию к этим точкам.
Угловые пиксели изображения — это (0,0)
и (width-1, height-1)
, и, конечно же, два других угла.
угловые пиксели изображения (0,0), (ширина-1, высота-1) и два других угла тоже
Большое спасибо! Проблема в том, что я не знаю точек для ввода их вspectiveTransform(). У меня есть только два совпадающих изображения. Вы знаете, как получить очки?