??在通过SIFT、SURF或者ORB进行特征点检测,生成了特征点和特征点描述子的vector后,如何进一步的进行对于图像的矫正。这个时候就用到了opencv的另外两个函数findHomography和perspectiveTransform。 ??findHomography是用来计算两张图像的单应性矩阵的。opencv的官方文档中有详细的使用说明: ??前两个参数分别是通过之前的特征检测找到的特征点,第三个参数为计算单应性矩阵的方法,默认为使用所有的点。第四个参数仅在第三个参数为CV_RANSAC时使用,为最大允许的特征点对间二次投影的误差。 ??perspectiveTransform函数为通过单应性矩阵生成校正之后的图像。
??前两个参数为原始图像和矫正之后的图像的点的集合。只能为2维或3维的向量。这里的点的集合指的是图像的位置排布,和像素值没有任何关系。第三个参数即为之前求出的单应性矩阵。 ??注意:生成的矫正图像为点的集合,即为vector向量,并不是图像,生成的只是原始图像与校正图像的位置对应关系,图像的生成在下面的例子中会说明。 示例:
int main()
{
Mat img_1 = imread("00068.jpg");
Mat img_2 = imread("00069.jpg");
if (!img_1.data || !img_2.data)
{
cout good_matches;
vector leftPoint,rightPoint;
for( int i = 0; i < descriptors_1.rows; i++ )
{
if( matches[i].distance < 0.6*max_dist )
{
good_matches.push_back( matches[i]);
leftPoint.push_back(keyPoints_1[matches[i].queryIdx].pt);//保存左图像的关键点
rightPoint.push_back(keyPoints_2[matches[i].trainIdx].pt);//保存右图像的关键点
}
}
Mat Homography = findHomography(leftPoint,rightPoint,CV_RANSAC,3);//生成单应性矩阵
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?