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

OpenCV CUDA模块特征检测------创建Harris角点检测器的GPU实现接口cv::cuda::createHarrisCorner

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

算法描述

该函数创建一个 基于 Harris 算法的角点响应计算对象,专门用于在 GPU 上进行高效计算。
它返回的是一个 cv::Ptrcv::cuda::CornernessCriteria 类型的对象,可用于后续调用 .compute() 方法对图像进行角点响应值计算。

函数原型

Ptr<CornernessCriteria> cv::cuda::createHarrisCorner
(int  	srcType,int  	blockSize,int  	ksize,double  	k,int  	borderType = BORDER_REFLECT101 
) 		

参数

  • srcType 输入源类型。目前仅支持 CV_8UC1 和 CV_32FC1。

  • blockSize 邻域大小。

  • ksize Sobel 算子的孔径参数(用于计算梯度)。

  • k Harris 检测器的自由参数。

  • borderType 像素外推方法(边界填充方式)。目前仅支持 BORDER_REFLECT101 和 BORDER_REPLICATE。

代码示例


#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <iostream>int main() {// Step 1: 加载灰度图cv::Mat h_img = cv::imread("/media/dingxin/data/study/OpenCV/sources/images/chessboard.png", cv::IMREAD_GRAYSCALE);if (h_img.empty()) {std::cerr << "Failed to load image!" << std::endl;return -1;}// Step 2: 将图像上传到 GPUcv::cuda::GpuMat d_img, d_corners;d_img.upload(h_img);// Step 3: 创建 Harris 角点检测器int srcType = d_img.type();int blockSize = 3;int ksize = 3;double k = 0.04;cv::Ptr<cv::cuda::CornernessCriteria> criteria = cv::cuda::createHarrisCorner(srcType, blockSize, ksize, k);// Step 4: 执行角点响应计算criteria->compute(d_img, d_corners);// Step 5: 下载结果并显示cv::Mat h_corners;d_corners.download(h_corners);cv::normalize(h_corners, h_corners, 0, 255, cv::NORM_MINMAX, CV_8U);cv::imshow("original picture", h_img);cv::imshow("Harris Corner Response", h_corners);cv::waitKey(0);return 0;
}

运行结果

在这里插入图片描述

http://www.lryc.cn/news/2398809.html

相关文章:

  • 【氮化镓】钝化层对p-GaN HEMT阈值电压的影响
  • C++:优先级队列
  • 睡眠分期 html
  • Java求职者面试:Spring、Spring Boot、Spring MVC与MyBatis技术深度解析
  • Github 2025-05-29 Go开源项目日报Top9
  • 前端项目种对某个文件夹进行大小写更改,git识别不到差异导致无变化
  • AWS VPC 网络详解:理解云上专属内网的关键要素
  • Ubuntu24.04.2 + kubectl1.33.1 + containerdv1.7.27 + calicov3.30.0
  • 循环神经网络(RNN)全面教程:从原理到实践
  • uniapp 键盘顶起页面问题
  • 利用TOA与最小二乘法直接求解
  • SpringBoot系列之RabbitMQ 实现订单超时未支付自动关闭功能
  • 【C++高级主题】命令空间(五):类、命名空间和作用域
  • ArcGIS Pro 3.4 二次开发 - 地图创作 1
  • 2.1HarmonyOS NEXT开发工具链进阶:DevEco Studio深度实践
  • MyBatis常用注解全解析:从基础CRUD到高级映射
  • 国标GB28181设备管理软件EasyGBS视频平台筑牢文物保护安全防线创新方案
  • 十二、【核心功能篇】测试用例列表与搜索:高效展示和查找海量用例
  • Baklib内容中台AI重构智能服务
  • 数据库包括哪些?关系型数据库是什么意思?
  • Python爬虫监控程序设计思路
  • Edge浏览器怎样开启兼容模式
  • 【HarmonyOS 5】Laya游戏如何鸿蒙构建发布详解
  • C++ TCP传输心跳信息
  • Elasticsearch | 如何将修改已有的索引字段类型并迁移数据
  • c++之STL容器的学习(上)
  • Linux 环境下高效视频切帧的实用指南
  • 【鱼皮-用户中心】笔记
  • MUX-VLAN基本概述
  • Cursor使用最佳实践总结