37 Opencv SIFT 特征检测

文章目录

  • [Ptr<SIFT> SIFT::create](#Ptr<SIFT> SIFT::create)
  • 示例

Ptr SIFT::create

c 复制代码
Ptr<SIFT> SIFT::create(
    int nfeatures = 0,
    int nOctaveLayers = 3,
    double contrastThreshold = 0.04,
    double edgeThreshold = 10,
    double sigma = 1.6 
);

参数说明:

    nfeatures:
        类型:int
        默认值:0
        描述:要保留的最大关键点数量。如果设置为 0 或负数,则不对关键点数量进行限制。

    nOctaveLayers:
        类型:int
        默认值:3
        描述:每个八度(octave)中的尺度层数量。这决定了金字塔每一层生成多少个尺度空间图像。更多的层意味着更精细的尺度变化检测。

    contrastThreshold:
        类型:double
        默认值:0.04
        描述:对比度阈值。只有当关键点的主曲率比这个阈值大时才会被保留。较高的值会减少检测到的关键点数量,但提高稳定性。较低的值则相反。

    edgeThreshold:
        类型:double
        默认值:10
        描述:边缘响应阈值。用于过滤掉那些位于边缘上的不稳定关键点。具体来说,它控制了Hessian矩阵两个特征值的比例。较小的值会导致更多的边缘点被保留,而较大的值则会更加严格地排除这些点。

    sigma:
        类型:double
        默认值:1.6
        描述:应用于初始图像的高斯模糊标准差。这是构建尺度空间金字塔的第一步,用来确保在不同尺度下的一致性。

示例

c 复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp> // 包含了OpenCV扩展功能模块,如SIFT等高级特征检测算法
#include <iostream>

using namespace cv;
using namespace std;
using namespace cv::xfeatures2d; // 使用cv::xfeatures2d命名空间以访问SIFT类

int main(int argc, char** argv) {
	// 加载灰度图像
	Mat src = imread("D:/vcprojects/images/test.png", IMREAD_GRAYSCALE);
	if (src.empty()) { // 检查是否成功加载图像
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE); // 创建一个窗口用于显示输入图像
	imshow("input image", src); // 显示输入图像

	// SIFT特征检测初始化
	int numFeatures = 400; // 设置SIFT算法要检测的最大特征点数量
	Ptr<SIFT> detector = SIFT::create(numFeatures); // 创建SIFT特征检测器实例
	vector<KeyPoint> keypoints; // 定义一个向量用于存储检测到的关键点
	detector->detect(src, keypoints, Mat()); // 在源图像中检测关键点,不使用掩码
	printf("Total KeyPoints : %d\n", keypoints.size()); // 打印检测到的总关键点数

	// 绘制关键点到图像
	Mat keypoint_img;
	drawKeypoints(src, keypoints, keypoint_img, Scalar::all(-1), DrawMatchesFlags::DEFAULT); // 绘制关键点,默认颜色,显示大小和方向
	namedWindow("SIFT KeyPoints", CV_WINDOW_AUTOSIZE); // 创建一个窗口用于显示带有关键点的图像
	imshow("SIFT KeyPoints", keypoint_img); // 显示带有关键点的图像

	waitKey(0); // 等待按键事件
	return 0;
}
相关推荐
大千AI助手6 分钟前
Prefix-Tuning:大语言模型的高效微调新范式
人工智能·神经网络·自然语言处理·llm·prefix-tuning·大千ai助手·前缀微调
雾江流10 分钟前
RikkaHub 1.6.11 | 开源的本地大型语言模型聚合应用,支持多种AI服务提供商
人工智能·语言模型·自然语言处理·软件工程
Mr_Dwj1 小时前
【Python】Python 基本概念
开发语言·人工智能·python·大模型·编程语言
私人珍藏库1 小时前
AI一键PPT 2.0.3 一键智能生成
人工智能·powerpoint
com_4sapi1 小时前
2025 权威认证头部矩阵系统全景对比发布 双榜单交叉验证
大数据·c语言·人工智能·算法·矩阵·机器人
2401_841495642 小时前
【自然语言处理】基于规则基句子边界检测算法
人工智能·python·自然语言处理·规则·文本·语言·句子边界检测算法
科技云报道2 小时前
AI+云计算互融共生,2025AI云产业发展大会即将举行
人工智能·云计算
飞哥数智坊2 小时前
TRAE SOLO 正式版实战:一个全栈打卡项目的真实体验
人工智能·trae·solo
qy-ll2 小时前
遥感论文学习
人工智能·深度学习·计算机视觉·gan·遥感·栅格化
G31135422732 小时前
深度学习中适合长期租用的高性价比便宜的GPU云服务器有哪些?
服务器·人工智能·深度学习