简体   繁体   English

从图像坐标转换为世界坐标

[英]Transforming from image coordinates to world coordinates

I have homography matrix H which is 3x3. 我有3x3的单应性矩阵H。 I have an image that only contains 0s and 1s to denote whether the pixel is occupied. 我有一个只包含0和1的图像,以表示像素是否被占用。 I would like to take this image and transform it into world coordinates using H. 我想拍摄这张图片,并使用H将其转换为世界坐标。

Is there an easy way to do this using cv2 in python? 有没有简单的方法可以在python中使用cv2做到这一点? Otherwise, do I need to convert each pixel location using H? 否则,是否需要使用H转换每个像素位置?

EDIT: 编辑:

Here's my code: 这是我的代码:

image = plt.imread('image.png')
obs = np.where(image > 0)
obs_map = np.vstack((obs[0], obs[1]))
obs_map = np.vstack((obs_map, np.ones(obs[0].shape[0])))
obs_map = np.dot(H, obs_map)
obs_map = np.dot(R, obs_map)
plt.scatter(obs_map[0, :], obs_map[1, :])
plt.show()

This seems to work but the scale seems off. 这似乎可行,但规模似乎缩小了。 What value do I need for z value? z值需要什么值?

H is H是

    1.1048200e-02   6.6958900e-04  -3.3295300e+00
   -1.5966000e-03   1.1632400e-02  -5.3951400e+00
    1.1190700e-04   1.3617400e-05   5.4276600e-01

and image consisting of 0s and 1s looks like this: 由0和1组成的图像如下所示:

在此处输入图片说明

and my plot looks like this: 我的情节看起来像这样:

在此处输入图片说明

I think warpPerspective() might be for you. 我认为warpPerspective()可能适合您。

Check it out: 看看这个:

OpenCV 2.4 OpenCV的2.4

OpenCV 3 OpenCV 3

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM