AKAZE 局部特征匹配 级联分类器使用 等比例缩放图片 给图片加logo 鱼眼校正 智能答卷识别 opencv滤镜效果 灰度图像增强方式 opencv模板匹配
基础知识点ORB 算法 使用 FAST detector 和 BRIEF descriptor 的思路。下面对 FAST 与 BRIEF 进行说明。
1.1 FAST(Featrues from Accelerated Segment Test)其基本思想是比较当前点与周边点差异,当周边有连续不少于一半的点均比中间点亮或者暗,则认为该点为一个特征点。
1.2 BRIEFBRIEF 对特征点生成描述特征向量。在 SIFT 与 SURF 中均使用了块特征描述方案, 使用不同小块的方向梯度直方图构成特征向量。BRIEF 使用点特征描述特征点
现在找两个相似的图,但是角度不同
可以看出两幅图片偏离了一定的角度,时间不同,角度不同,找特征点使用以下封装
根据角点位置计算 BRIEF 描述子, orb->compute(img1, keypoints1, descriptors1);
结果#include
#include
#include
using namespace cv;
using namespace std;
#ifdef _DEBUG
#pragma comment(lib,"opencv_world440d.lib")
#else
#pragma comment(lib,"opencv_world440.lib")
#endif
int main()
{
Mat img1 = imread("./big.jpg", 1);
Mat img2 = imread("./big2.jpg", 1);
std::vector keypoints1, keypoints2; // 定义关键点(特征点)
//定义描述子
Mat descriptors1, descriptors2;
Ptr orb = ORB::create();
//提取特征点
orb->detect(img1, keypoints1);
orb->detect(img2, keypoints2);
//根据两幅图像的角点位置计算描述符
orb->compute(img1, keypoints1, descriptors1);
orb->compute(img2, keypoints2, descriptors2);
vector matches;
//找寻距离最小的匹配
BFMatcher bfmatcher(NORM_HAMMING, true);
bfmatcher.match(descriptors1, descriptors2, matches);
// 匹配对筛选:选择 hamming距离小于最小距离的两倍的特征点
double min_dist = 1000, max_dist = 0;
// 找出所有匹配之间的最大值和最小值
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【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脚手架写一个简单的页面?