AKAZE 局部特征匹配 级联分类器使用 等比例缩放图片 给图片加logo 鱼眼校正 智能答卷识别 opencv滤镜效果 灰度图像增强方式
基础知识点AKAZE特征提取算法是局部特征描述子算法,是SIFT算法的改进、采用非线性扩散滤波迭代来提取与构建尺度空间、采用与SIFT类似的方法寻找特征点, 1 在描述子生成阶段采用ORB类似的方法生成描述子 2 描述子比ORB多了旋转不变性特征 3 ORB采用LDB方法,KAZE采用 M-LDB。
orb算法获取尺度不变性,构建了图像金字塔,在金字塔的每一层上都检测关键点。AKAZE则是改进算法。实际上,把AKAKE改成ORB就是执行ORB算法
//opencv里面,修改算法名称即可
Ptr detector = ORB::create(minHessian);/
Ptr detector = AKAZE::create();
找出关键点很简单,就是下面做法
vector keypoints;
detector->detect(src, keypoints, Mat());//找出关键点
show me the code
#include
#include
#include
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat img1 = imread("in.jpg", IMREAD_GRAYSCALE);
Mat img2 = imread("big2.jpg", IMREAD_GRAYSCALE);
if (img1.empty() || img2.empty()) {
printf("could not load images...\n");
return -1;
}
imshow("box image", img1);
imshow("scene image", img2);
// extract akaze features
Ptr detector = AKAZE::create();
vector keypoints_obj;
vector keypoints_scene;
Mat descriptor_obj, descriptor_scene;
detector->detectAndCompute(img1, Mat(), keypoints_obj, descriptor_obj);
detector->detectAndCompute(img2, Mat(), keypoints_scene, descriptor_scene);
// matching
FlannBasedMatcher matcher(new flann::LshIndexParams(20, 10, 2));
//FlannBasedMatcher matcher;
vector matches;
matcher.match(descriptor_obj, descriptor_scene, matches);
// draw matches(key points)
Mat akazeMatchesImg;
/*
drawMatches(img1, keypoints_obj, img2, keypoints_scene, matches, akazeMatchesImg);
imshow("akaze match result", akazeMatchesImg);*/
vector goodMatches;
double minDist = 100000, maxDist = 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脚手架写一个简单的页面?