37 Opencv SIFT 特征检测

ops/2024/12/27 16:37:16/

文章目录

  • Ptr<SIFT> SIFT::create
  • 示例

Ptr SIFT::create

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描述:应用于初始图像的高斯模糊标准差。这是构建尺度空间金字塔的第一步,用来确保在不同尺度下的一致性。

示例

#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;
}

http://www.ppmy.cn/ops/145424.html

相关文章

计算机操作系统与安全复习笔记

1 绪论 操作系统目标: 方便性; 有效性; 可扩充性; 开放性. 作用: 用户与计算机硬件系统之间的接口; 计算机资源的管理者; 实现了对计算机资源的抽象; 计算机工作流程的组织者. 多道程序设计: 内存中同时存放若干个作业, 使其共享系统资源且同时运行; 单处理机环境下宏观上并行…

从单机到微服务的转型之路

从单机到微服务的转型之路 电商网站架构的演进与技术实现初期架构&#xff1a;单机架构第二阶段&#xff1a;应用与数据库分离第三阶段&#xff1a;应用服务集群与负载均衡第四阶段&#xff1a;数据库读写分离与缓存优化第五阶段&#xff1a;微服务架构 架构的优点&#xff1a;…

EasyExcel停更,FastExcel接力

11月6日消息&#xff0c;阿里巴巴旗下的Java Excel工具库EasyExcel近日宣布&#xff0c;将停止更新&#xff0c;未来将逐步进入维护模式&#xff0c;将继续修复Bug&#xff0c;但不再主动新增功能。 EasyExcel以其快速、简洁和解决大文件内存溢出的能力而著称&#xff0c;官方…

Day58 图论part08

拓扑排序精讲 拓扑排序看上去很复杂,其实了解其原理之后,代码不难 代码随想录 import java.util.*;public class Main{public static void main (String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();List<List<Integer&…

【信息系统项目管理师】第11章:项目成本管理-基础和过程 考点梳理

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 11.1 管理基础11.1.1 重要性和意义11.1.2 相关术语和定义11.1.3 管理新实践11.2 项目成本管理过程11.2.1 过程概述11.2.2 裁剪考虑因素11.2.3 敏捷与适应方法【学习建议】本章节内容属于10大管理知识领域中的重…

Docker搭建YesPlayMusic云音乐播放器并实现异地远程连接播放歌曲

文章目录 前言1. 安装Docker2. 本地安装部署YesPlayMusic3. 安装cpolar内网穿透4. 固定YesPlayMusic公网地址 前言 本文主要介绍如何在本地Linux服务器快速搭建 YesPlayMusic 云音乐播放器&#xff0c;并结合 cpolar 内网穿透工具实现随时随地远程访问局域网内的音乐播放器&am…

攻防世界web第三题file_include

<?php highlight_file(__FILE__);include("./check.php");if(isset($_GET[filename])){$filename $_GET[filename];include($filename);} ?>这是题目 惯例&#xff1a; 代码审查&#xff1a; 1.可以看到include(“./check.php”);猜测是同级目录下有一个ch…

BUG分析 - 重启有时失败

1. 倒查版本 1.0_11 - ok1.0_12 - fail 2.对比1.0_11和1.0_12 失败时的日志 ================================== 1.0_11 ============================== 2024-12-26 09:46:51.886 INFO [26332] [Thre