我正在尝试实现以下paper,它将图像转换为鸟瞰视图,但是当我使用以下代码执行此操作时,它不会给我预期的结果。
import cv2
import numpy as np
tilt = np.pi * 35 / 180
src = cv2.imread("images/aaa.png")
width, height, depth = src.shape
# Intrinsic parameters of the Camera
calibrate = np.array([[1000, 0, 800],
[0, 1200, 100],
[0, 0, 1]], dtype=np.float32)
# The transformation matrix
b = np.array([[1, 0, 0],
[0, np.sin(tilt), -np.sin(tilt)],
[0, np.cos(tilt), np.cos(tilt)]], dtype=np.float32)
# Homography Matrix
result = np.mat(calibrate) * np.mat(b)
print result
output = cv2.warpPerspective(src, result, (height, width))
cv2.imwrite("theresult.png", output)
print output
源图像是:
应该计算结果:
我得到的结果:
我不知道出了什么问题,因为我的表现与纸张完全相同。如果有替代方案,即使是C ++也请提供给我。
答案 0 :(得分:1)
我有同样的问题。现在我正在这样做:
*import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('9.png')
rows,cols,ch = img.shape
pts1 = np.float32([[0,40],[300,40],[0,400],[300,400]])
pts2 = np.float32([[0,0],[300,0],[100,400],[200,400]])
M = cv2.getPerspectiveTransform(pts1,pts2)
dst = cv2.warpPerspective(img,M,(300,300))
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
plt.show()*
这给了我这个结果:
我希望它有用