BirdView转换导致黑色图像

时间:2015-01-03 18:48:45

标签: python c++ opencv homography

我正在尝试实现以下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

源图像是:

source

应该计算结果:

result

我得到的结果:

result_2

我不知道出了什么问题,因为我的表现与纸张完全相同。如果有替代方案,即使是C ++也请提供给我。

1 个答案:

答案 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()*

这给了我这个结果:

results

我希望它有用