当前位置: 首页 > news >正文

OpenCV CUDA模块图像特征检测与描述------图像中快速检测特征点类cv::cuda::FastFeatureDetector

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::cuda::FastFeatureDetector 是 OpenCV 的 CUDA 加速模块中的一部分,用于在图像中快速检测特征点。FAST(Features from Accelerated Segment Test)算法是一种高效的角点检测算法,能够在保持较高精度的同时显著提高速度。

cv::cuda::FastFeatureDetector 提供了 GPU 加速的 FAST 角点检测功能。它继承自 cv::Algorithm 类,并且实现了与 CPU 版本的 cv::FastFeatureDetector 相似的接口,但利用了 CUDA 来加速计算过程。

主要成员函数

构造函数

  cv::cuda::FastFeatureDetector::FastFeatureDetector(int threshold=10, bool nonmaxSuppression=true, int type=cv::FastFeatureDetector::TYPE_9_16)
  • threshold: 阈值,用来判断一个像素是否为角点。
  • nonmaxSuppression: 是否启用非极大值抑制来过滤掉一些不是最强响应的角点。
  • type: 指定使用的FAST类型,可以是 TYPE_9_16, TYPE_7_12, 或者 TYPE_5_8,分别对应不同的测试模式。

检测函数

   void detect(cv::InputArray image,cv::Ptr<cv::cuda::GpuMat>& keypoints, cv::Stream& stream = cv::cuda::Stream::Null())
  • image: 输入图像,通常是一个灰度图(CV_8UC1),也可以是彩色图(CV_8UC3),但会被转换为灰度图处理。
  • keypoints: 输出的关键点集合。
  • stream: 可选参数,指定CUDA流以实现异步操作。

示例代码

#include <opencv2/cudafeatures2d.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// 加载图像cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/Lenna.png", cv::IMREAD_GRAYSCALE );if ( img.empty() ){std::cerr << "无法加载图像" << std::endl;return -1;}// 将图像上传到 GPUcv::cuda::GpuMat d_img( img );// 创建 FastFeatureDetectorcv::Ptr< cv::cuda::FastFeatureDetector > detector = cv::cuda::FastFeatureDetector::create( 30 );  // 设置阈值为30// 检测特征点std::vector< cv::KeyPoint > keypoints;detector->detect( d_img, keypoints );// 绘制特征点cv::Mat img_keypoints;cv::drawKeypoints( img, keypoints, img_keypoints );cv::imshow( "FAST Feature Detector", img_keypoints );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述

相关文章:

  • JVM参数详解与实战案例指南(AI)
  • Vue3 与 Vue2 区别
  • 张 Prompt Tuning--中文数据准确率提升:理性与冲动识别新突破
  • Axure项目实战:智慧运输平台后台管理端-订单管理1(多级交互)
  • 【QT】在界面A打开界面B时,界面A隐藏,界面B关闭时,界面A复现
  • 基于大模型的闭合性尺桡骨干骨折全方位诊疗研究报告
  • 并发编程中的对象组合的哲学
  • Server-Driven UI:Kotlin 如何重塑动态化 Android 应用开发
  • Ubuntu部署私有Gitlab
  • 鸿蒙UI开发——实现一个上拉抽屉效果
  • 物流项目第六期(短信微服务——对接阿里云第三方短信服务JAVA代码实现、策略模式 + 工厂模式的应用)
  • 贪心算法题目合集2
  • Java异常处理全解析:从基础到自定义
  • 【Linux】C语言模拟实现shell命令行(程序替换原理)
  • Web渗透红队实战:企业级对抗的工程化突破手册
  • C++类与对象(二):六个默认构造函数(二)
  • Spark大数据分与实践笔记(第五章 HBase分布式数据库-02)
  • Python MD5加密算法脚本
  • 深入浅出IIC协议 - 从总线原理到FPGA实战开发 --第四篇:I2C工业级优化实践
  • vue调后台接口
  • 阿克苏网站建设价格/网络营销的功能有哪些?
  • 网站被主流搜索引擎收录的网页数量是多少/网店运营
  • 网站上的美工图片要怎么做/seo1新地址在哪里
  • 个人网页设计作品纯html/seo培训
  • 手机网站关键/2023年12月疫情又开始了吗
  • 网站添加谷歌地图/恶意点击软件哪几种