【问题标题】:Using perspective transformation to change point of view of an image. Not getting desired result使用透视变换来改变图像的视角。没有得到想要的结果
【发布时间】:2021-08-24 03:42:36
【问题描述】:

我正在尝试根据第二张图片更改第一张图片的视角。为了找到单应矩阵,我在两个图像中找到了一个共同对象(白色公告板)的四个坐标。

Image 1

Image 2

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
img1 = cv2.imread("rgb per.jpg")
img2 = cv2.imread("IR per.jpg")
img_1_coor = np.float32([[1178,425], [1201,425], [1178,439], [1201,439], [1551,778]]) #coordinate of white notice board in rgb image
img_2_coor = np.float32([[370,98], [381,103], [367,107], [380,112], [498,332]]) #coordinate of same object in IR image
for x in range(0,4):
    cv2.circle(img1,(img_1_coor[x][0],img_1_coor[x][1]),5,(255,0,0),1)
    matplotlib.rcParams['figure.dpi'] = 300
#plt.imshow(img1) #this verified that the found coordinates are correct

#P = cv2.getPerspectiveTransform(img_1_coor,img_2_coor)
H, s = cv2.findHomography (img_1_coor,img_2_coor)
print(s)
perspective = cv2.warpPerspective(img1, H, img2.shape[:2])
plt.imshow(perspective)
#the resulting image 

Output image 我希望输出类似于图像 1,视点(摄像机角度)作为图像 2。如果这是不可能的,反之亦然,将图像 2 的视点作为图像 1 也会有所帮助。

谁能告诉我是否可以使用图像中对象的坐标来改变全图的视角,如果可以,我的代码有什么问题吗?

【问题讨论】:

    标签: python deep-learning opencv-python vision


    【解决方案1】:

    我推荐一个实现透视变换的计算机视觉包(例如 OpenCV 或他们现在使用的任何东西)。这是一种相当常见的计算机视觉操作。它也不太恰当地称为角钉。

    如果您希望自己实现它作为练习,您可以查看the Direct Linear Transform,您可以在其中解决齐次坐标中的矩阵问题,可能使用奇异值分解。

    【讨论】:

      猜你喜欢
      • 2012-04-26
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      相关资源
      最近更新 更多