实际上我想在opencv c ++中使用“估计几何变换”matlab的函数,他们的任何一种这样的函数在c ++中的opencv中都能完全相同吗?
注意 :我正在使用此功能在功能的基础上创建一对眼睛周围的边界框,这些功能在每一帧都不是静态的......
答案 0 :(得分:0)
我认为你想要得到的是从image1到image2的仿射变换矩阵。 给定image1和image2中匹配的点集的坐标,你可以使用estimateRigidTransform得到仿射变换矩阵:正如文档所指出的,这个函数可以用作输入两组预先计算的匹配点,甚至直接输入两个图像:该函数将在内部找到两个图像中匹配的特征,并使用这些匹配点来获得最佳仿射变换矩阵。
正如用户Micka在您的问题的评论中正确建议的那样,由于您拥有可以翻译,旋转但也可以缩放的功能,因此您需要将标记fullAffine
设置为false
强>
由于你在讨论框架,我认为你试图在视觉流程中匹配点,所以这肯定是你需要的功能。
同样可以获得也可以用getAffineTransform
剪切的图像:给定两个图像中的一组点,该opencv函数将返回2x3仿射变换矩阵。为了更好地理解什么是仿射变换(从而更好地理解相似变换,在您的情况下),您可以参考以下文档。它们完全相同,只有两个版本用于当前的两个OpenCV分支。
我更喜欢2.4文档的布局,但解释的概念完全相同。
OpenCV 2.4:
http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html
OpenCV 3.2: