Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在给定平面上创建图像的鸟瞰图?_C++_Opencv - Fatal编程技术网

C++ 如何在给定平面上创建图像的鸟瞰图?

C++ 如何在给定平面上创建图像的鸟瞰图?,c++,opencv,C++,Opencv,我得到了一个平面(支持向量和平面的法向量),一个由我知道其内在参数(fx,fy,cx,cy)的相机拍摄的图像。如何将此图像转换为类似鸟瞰图的图像(以便鸟瞰图与平面的法向量共线)。我对我必须使用的坐标系感到困惑,有些矩阵是世界坐标,有些是局部坐标。我知道OpenCV中有warpPerspective() Im使用OpenCV:2.4.9 非常感谢 更新: 我是否必须在相机面向法线的情况下计算4个点,然后从鸟瞰视图计算4个点,并将它们传递到findHomography()以获得变换矩阵 更新: 解决

我得到了一个平面(支持向量和平面的法向量),一个由我知道其内在参数(fx,fy,cx,cy)的相机拍摄的图像。如何将此图像转换为类似鸟瞰图的图像(以便鸟瞰图与平面的法向量共线)。我对我必须使用的坐标系感到困惑,有些矩阵是世界坐标,有些是局部坐标。我知道OpenCV中有
warpPerspective()

Im使用OpenCV:2.4.9

非常感谢

更新: 我是否必须在相机面向法线的情况下计算4个点,然后从鸟瞰视图计算4个点,并将它们传递到
findHomography()
以获得变换矩阵

更新:
解决了的。成功了

世界平面上的矩形将在图像中显示为四边形。
在鸟瞰视图中,您希望它再次显示为矩形。 您必须至少知道该世界矩形的纵横比,才能使俯视图沿两个轴正确且均匀地缩放

给定图像中的4个四边形2D点和目标矩形角点(基本上为其选择2D坐标),您可以计算从四边形到矩形的单应性,并使用
warpPerspective()
进行渲染

这通常是最简单的方法


您还可以浏览摄影机和矩阵本身。为此,需要使用正交投影将摄影机旋转到平面上方。参见单应分解

我的四合院是什么?然后我如何计算单应性?是通过计算平面上的4个点得到的四边形吗?“计算从四边形到矩形的单应性”是什么意思?哪个矩形?请你详细解释一下好吗?谢谢你需要的是顶视图,对吗?也就是说,视图/摄像机矢量和平面法线之间的角度将为直线角度(180°)。OTOH将不是这样,它将有一些角度,而不是0/180°。俯视图将是正交视图,而鸟瞰图是透视视图。这可能有助于计算相机变换:您可能需要:相机的外部参数(至少是视角)或平面上“已知”点的4像素位置(足以知道平面上这些点之间的相对位置)在我的第一张图片中,假设“高度”线是一个轴,相机和这个轴之间的角度是已知的。可能视角不够,我被卡在那里了。。。但我看你自己也有办法吗?=)