OpenCV AKAZE特征检测
  Jk5625xsZPHl 2023年11月02日 39 0

AKAZE是KAZE的加速版,和SIFT特征检测一样,它也可以检测图像的特征点,和描述子但是它与SIFT的比较:

  • 更加稳定,更加迅速;
  • 非线性尺度空间,得到的关键点更准确
  • 比较新的算法。

AKAZE 特征对尺度、旋转、有限仿射具有不变性,并且由于非线性尺度空间,在不同尺度上具有更多的独特性。

API介绍

static Ptr<AKAZE> create(AKAZE::DescriptorType descriptor_type = AKAZE::DESCRIPTOR_MLDB,int descriptor_size = 0, int descriptor_channels = 3,float threshold = 0.001f, int nOctaves = 4,int nOctaveLayers = 4, KAZE::DiffusivityType diffusivity = KAZE::DIFF_PM_G2);
/*******************************************************************
*			descriptor_type: 				提取描述符的类型			
*			descriptor_size:	    		描述符的大小(以位为单位)0代表全尺寸
*			descriptor_channels:			描述符中的通道数(1、2、3)
*			threshold:  					响应阈值
*			nOctaves:						图像的最大倍频程演化
*			nOctaveLayers:					每个比例级别的默认子级别数
*			diffusivity:					扩散型
*							DIFF_PM_G1
*							DIFF_PM_G2
*							DIFF_WEICKERT 
*							DIFF_CHARBONNIER
*********************************************************************/
virtual void detect( InputArray image,std::vector<KeyPoint>& keypoints,InputArray mask=noArray());
/*******************************************************************
*			image: 				输入图				
*			keypoints:	        角点信息
*			mask:				计算亚像素角点区域大小			
*********************************************************************/
void drawKeypoints( InputArray image, const std::vector<KeyPoint>& keypoints, InputOutputArray outImage,const Scalar& color=Scalar::all(-1), DrawMatchesFlags flags=DrawMatchesFlags::DEFAULT );
/*******************************************************************
*			image: 				输入图				
*			keypoints:	        角点信息
*			outImage:			输出图
*			color:  			颜色
*			flags:				绘制匹配标记			
*********************************************************************/

综合代码

#include <iostream>
#include <map>
#include <new>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
class AKAZEFeature
{
public:
	AKAZEFeature() :img(imread("mm.jpg"))
	{
		result["img"] = img;
	}
	void TestAKAZE()
	{
		Ptr<AKAZE> akaze = AKAZE::create();
		akaze->detect(img, point);
		drawKeypoints(img, point, result["akaze"], Scalar(255, 0, 255));
	}
	void Show()
	{
		for (auto& v : result)
		{
			imshow(v.first, v.second);
		}
		waitKey(0);
	}
protected:
	Mat img;
	vector<KeyPoint> point;
	map<string, Mat> result;
};
int  main()
{
	unique_ptr<AKAZEFeature> p(new AKAZEFeature);
	p->TestAKAZE();
	p->Show();
	return 0;
}

OpenCV  AKAZE特征检测_角点


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  gBkHYLY8jvYd   2023年12月06日   50   0   0 #includecii++
  gBkHYLY8jvYd   2023年11月19日   27   0   0 #includecic++
  gBkHYLY8jvYd   2023年11月19日   14   0   0 #includeios数据
  gBkHYLY8jvYd   2023年11月19日   26   0   0 #include子树结点
  gBkHYLY8jvYd   2023年11月19日   24   0   0 #includei++数据
  gBkHYLY8jvYd   2023年11月19日   27   0   0 #include数组ci
  gBkHYLY8jvYd   2023年12月10日   18   0   0 #include邻域灰度图像
  gBkHYLY8jvYd   2023年12月10日   22   0   0 #include数组i++
  gBkHYLY8jvYd   2023年12月06日   19   0   0 #includeios数据
  gBkHYLY8jvYd   2023年12月08日   20   0   0 #includecii++
  gBkHYLY8jvYd   2023年11月19日   23   0   0 #includeiosci
  gBkHYLY8jvYd   2023年11月22日   23   0   0 #include十进制高精度
  gBkHYLY8jvYd   2023年11月22日   26   0   0 #includeiosci
Jk5625xsZPHl