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++ 如何使用opencv中的单应矩阵将一个点从一幅图像重新投影到另一幅图像?_C++_Opencv_Computer Vision - Fatal编程技术网

C++ 如何使用opencv中的单应矩阵将一个点从一幅图像重新投影到另一幅图像?

C++ 如何使用opencv中的单应矩阵将一个点从一幅图像重新投影到另一幅图像?,c++,opencv,computer-vision,C++,Opencv,Computer Vision,我从不同的角度拍摄了两张图像I1和I2。我使用OpenCV中的findHomography函数计算了单应矩阵H。现在我需要将图像I1的中心像素p1(x,y)重新投影(即,找到像素坐标)到图像I2上。单应基本上是一种线性映射,也就是说,它可以通过与3x3矩阵的简单乘法来执行。引入实际的非线性翻译(但这是一个更乏味的故事) 长话短说,如果您有OpenCV数据类型,例如Point2f,则可以透视性地使用配送到扭曲点 std::vector<Point2f> src_points; std:

我从不同的角度拍摄了两张图像I1和I2。我使用OpenCV中的findHomography函数计算了单应矩阵H。现在我需要将图像I1的中心像素p1(x,y)重新投影(即,找到像素坐标)到图像I2上。

单应基本上是一种线性映射,也就是说,它可以通过与3x3矩阵的简单乘法来执行。引入实际的非线性翻译(但这是一个更乏味的故事)

长话短说,如果您有OpenCV数据类型,例如
Point2f
,则可以透视性地使用配送到扭曲点

std::vector<Point2f> src_points;
std::vector<Point2f> dest_points;
// ... add some points to src_points and get H e.g. from findHomography
perspectiveTransform( src_points, dest_points, H);
std::向量src_点;
std::向量目标点;
// ... 向src_点添加一些点,并从findHomography获取H.e
透视变换(src_点、dest_点、H);

你会发现一个更广泛的例子。

到目前为止你做了什么?谢谢你的幻灯片。我刚刚从两幅图像的一对点计算了H矩阵。这个函数透视变换(src_点,dest_点,H)解决了它。解决了!谢谢。这就是我看到的,不客气。如果您满意,请接受并投票支持我的回答。谢谢,当然可以。已经这么做了,因为我是个新手,一旦我赢得至少15个声誉,我的选票就会出现。如果我的问题有效,请投票表决。谢谢