opencv cv2.findHomography sift、surf特征匹配 单应性矩阵理解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv cv2.findHomography sift、surf特征匹配 单应性矩阵理解相关的知识,希望对你有一定的参考价值。
参考技术A 单应性矩阵是一个3*3的矩阵,可以从cv2.findHomography获得例如:
H, status = cv2.findHomography(ptsA, ptsB, cv2.RANSAC, 5)
ptsA, ptsB对应两幅图获得的sift或者surf特征点,这里不细讲
参考: https://www.cnblogs.com/lzq116/p/11836657.html
cv2.findHomography得到的H是图一到图二的单应性矩阵
如果需要图二到图一的单应性矩阵,则求逆:np.linalg.inv(H)
上图仅作参考,得到得的H和上面图中得不太一样
(原因:opencv坐标原点是左上角,上图坐标原点是左下角)
以下图为例介绍
其中theta顺时针为正
上面的H矩阵可以看成先旋转再平移
计算不用人工算,仿着下面写就行
注意:每个坐标外面两层中括号,不然会报错。
上面是图一到图二的坐标变换
如果需要图二到图一的单应性矩阵,则求逆:np.linalg.inv(h)
opencv4opencv视频教程 C++(opencv教程)1opencv介绍和环境搭建
下一讲:【opencv4】opencv视频教程 C++(opencv教程)2、加载,修改,保存图像
文章目录
opencv介绍和环境搭建
opencv组成架构
核心模块
环境搭建(换成自己下载的版本)
我下的opencv4,跟opencv3略有差异,应该也能用
https://opencv.org/releases/
https://sourceforge.net/projects/opencvlibrary/files/4.5.5/opencv-4.5.5-vc14_vc15.exe/download
下载好后双击解压,我解压在这:F:\\opencv4.5.5
然后老师让把F:\\opencv4.5.5\\opencv\\build\\x64\\vc15\\bin
加到环境变量里去。。他vs2015加的vc14,我vs2019就加vc15吧(先不加看看报不报错,后面测试发现确实报找不到动态库错误,加了就没报错了,当然也可以不加,直接把那个动态库文件拷贝跟我们源代码放在一起)
注意:如果修改的环境变量,要重启下电脑才能生效(重启vs貌似也可以?)
包括头文件:
D:\\opencv3.1\\opencv\\build\\include
D:\\opencv3.1\\opencv\\build\\include\\opencv
D:\\opencv3.1\\opencv\\build\\include\\opencv2
库文件
D:\\opencv3.1\\opencv\\build\\x64\\vc14\\lib
链接器
opencv_world310d.lib
vs新建项目,空项目,test_opencv_installl
视图————>属性管理器,在debug | x64那新增属性页arnoldProperties20220129(老师有现成属性页,我不知道他那个怎么来的),然后对它右键————>属性,C/C++附加包含目录,
链接器——>附加库目录
链接器——>输入——>附加依赖项,把需要链接的静态库名字加进去
然后右边源文件——>新建文件main.cpp
输入代码:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main(int argc, const char* argv[])
Mat src = imread("img.jpg");
if (src.empty())
printf("could not load image...\\n");
return -1;
namedWindow("test opencv setup", WINDOW_AUTOSIZE);
imshow("test opencv setup", src);
waitKey(0);
return 0;
然后拷贝图片img.jpg跟源码放在一起,ctrl+f5编译运行:
以上是关于opencv cv2.findHomography sift、surf特征匹配 单应性矩阵理解的主要内容,如果未能解决你的问题,请参考以下文章
cmake错误:opencv2/opencv.hpp:opencv2/opencv.hpp:没有这样的文件或目录