C++ 点相对于平面的OpenCv水滴跟踪

C++ 点相对于平面的OpenCv水滴跟踪,c++,opencv,computer-vision,projection,openframeworks,C++,Opencv,Computer Vision,Projection,Openframeworks,我正在做一个安装,使用openCv跟踪blob,并在blob上投影图形。问题是我的相机关了,离投影仪太远了 我想得到点相对于投影平面的位置,我需要通过在相机视图中标出平面的角来校准 我的问题是如何使用4点信息,然后将跟踪的水滴从摄影机视图转换到投影平面,使投影的图形与跟踪的水滴对齐?不确定我应该搜索什么。检测到4个角点后,可以使用计算到投影仪平面的变换 一旦进行了这种转换,您就可以使用从一个坐标系转换到另一个坐标系。不幸的是,我现在无法提供一个最小的代码示例,但我建议您看看和它的示例。有一个基于

我正在做一个安装,使用openCv跟踪blob,并在blob上投影图形。问题是我的相机关了,离投影仪太远了

我想得到点相对于投影平面的位置,我需要通过在相机视图中标出平面的角来校准


我的问题是如何使用4点信息,然后将跟踪的水滴从摄影机视图转换到投影平面,使投影的图形与跟踪的水滴对齐?不确定我应该搜索什么。

检测到4个角点后,可以使用计算到投影仪平面的变换


一旦进行了这种转换,您就可以使用从一个坐标系转换到另一个坐标系。

不幸的是,我现在无法提供一个最小的代码示例,但我建议您看看和它的示例。有一个基于摄影机的不失真示例,但包装器还提供了通过和扭曲/取消扭曲透视的实用程序

Bare in mind of XCV具有方便的功能,可以将图像的
转换为
cv::Mat
toCv()
toOf()


ofxCv可能会使使用Elad Joseph推荐的OpenCV函数变得更容易(听起来正是您所需要的)

我实际上不需要转换任何图像。我只需要计算点数。获得新的观点。实际上,我是通过逆向工程一段代码来完成转换的。但我不确定是否有更好的方法。不必使用变换扭曲所有图像,只需变换水滴坐标即可。一旦你有了转换矩阵,它是相当直接的,请看公式,哦,听起来是正确的。看看这个方法,我怎样才能得到变换矩阵?如果你用投影仪投影这些点,它们的坐标就在投影仪系统中。如果你检测到它们,你的相机系统中就有它们的坐标。这正是定义透视变换所需要的。谢谢你的帮助。但我还是不明白。所以我需要使用getPerspectiveTransform处理平面的4个点和输出。它将返回一个转换矩阵,我用它来应用于我想在透视图中找到的点?