cv2.warpPerspective сильно искажает изображение - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь растянуть изображение, чтобы оно имело реальные пропорции размера.Я знаю пропорции некоторых внутренних точек и использую эти точки, чтобы исказить перспективу изображения, но, похоже, ничего не работает.

Изображение можно получить здесь: https://drive.google.com/file/d/1LUnnzKHDcMw3GnQb7UCyjjs_LtPI8o_6/view?usp=sharing

Я пытался использовать cv2.warpPerspective на многих различных версиях этой проблемы, и все они работали нормально, но на этот раз это не работает.

import numpy as np
import cv2
image = cv2.imread("/Desktop/20190203071840.jpg", 1)
#bridge
image[750:760, 520:530] = [0, 255,0]
#river bend
image[900:910, 3200:3210] = [0, 0,255]
#railing
image[1650:1660, 530:540] = [255, 0,0]
#mid river
image[1640:1650, 3250:3260] = [255, 255,255]

ih, iw, _ = image.shape


#four corners of the image
#pts = np.array([[0,0], [iw,0],[0,ih],[iw,ih]], np.float32)

#bridge, river bend, railing, river/tree
pts = np.array([[750,520], [900, 3200], [1650,530], [1640,3250]],     np.float32)

#real size mapping calculated with geometry
#top left, top rigt, bottom left, bottom right
dst = np.array([[0,0],[575,300],[645,235],[636,445]], np.float32)

#find transformation matrix 
M = cv2.getPerspectiveTransform(pts, dst)

#create a background for our real-sized image 
black = np.zeros((ih , iw, 3), np.uint8)
cv2.imwrite('black.jpg',black)
bh, bw, _ = black.shape

image = cv2.warpPerspective(image, M, (black.shape[1], black.shape[0]))
#resize and show image
image = cv2.resize(image, None, fx= .3, fy=.3, interpolation =     cv2.INTER_LINEAR)
cv2.imshow("Original with Bounding Box and Ellipse", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Я ожидал, что прямоугольник создан из четырех точекв очках будет растягиваться в трапециевидную форму, созданную четырьмя точками в dst.Вместо этого изображение становится сильно искаженным.

Как я могу исправить это искажение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...