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

OPenCV CUDA模块目标检测----- HOG 特征提取和目标检测类cv::cuda::HOG

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

算法描述

cv::cuda::HOG 是 OpenCV 的 CUDA 模块中对 HOG 特征提取和目标检测 提供的 GPU 实现。它与 CPU 版本的 cv::HOGDescriptor 类似,但利用了 GPU 的并行计算能力以提高性能。

公共成员函数

创建与初始化

函数描述
static Ptr cv::cuda::HOG::create()创建一个默认配置的 HOG 对象。
void setSVMDetector(InputArray _svmDetector)设置 SVM 分类器权重向量,用于检测特定目标(如行人)。

参数设置(与 HOG 特征相关)

函数描述
void setWinSize(Size winSize)设置检测窗口大小(必须是 cell 大小的整数倍)。
void setBlockSize(Size blockSize)设置 block 的大小(单位:像素)。
void setCellSize(Size cellSize)设置 cell 的大小(单位:像素)。
void setBinCount(int nBins)设置每个 cell 的方向直方图 bin 数量。
void setBlockStride(Size blockStride)设置 block 移动步长(单位:像素)。
void setDerivativeAperture(int derivAperture)设置图像平滑/导数计算的孔径大小。
void setWinSigma(double winSigma)高斯窗口的标准差。
void setHistogramNormType(int histogramNormType)设置直方图归一化方式(L2Hys, L1, L1Sqrt, L2)。
void setL2HysNormalization(bool l2HysNormalization)是否启用 L2-Hys 归一化。
void setGammaCorrection(bool gammaCorrection)是否启用伽马校正。
void setNumLevels(int numLevels)设置金字塔层数。

检测方法

函数描述
void detectMultiScale(InputArray img, OutputArray foundLocations, double hitThreshold = 0, Size winStride = Size(), Size padding = Size())在图像中多尺度检测目标,并返回检测到的位置(矩形框)。

示例代码(GPU 上的行人检测)

#include <opencv2/cudaobjdetect.hpp>
#include <opencv2/opencv.hpp>int main()
{// 创建 HOG 对象cv::Ptr< cv::cuda::HOG > hog = cv::cuda::HOG::create();// 设置 SVM 分类器(行人检测)std::vector< float > detector = cv::HOGDescriptor::getDefaultPeopleDetector();hog->setSVMDetector( detector );// 读取图像(默认为 BGR 三通道)cv::Mat frame = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/00001.jpg" );if ( frame.empty() ){std::cerr << "无法读取图像!" << std::endl;return -1;}// 转换为灰度图(CV_8UC1)cv::Mat gray_frame;cv::cvtColor( frame, gray_frame, cv::COLOR_BGR2GRAY );// 上传到 GPUcv::cuda::GpuMat d_frame( gray_frame );// 执行检测std::vector< cv::Rect > found_locations;hog->detectMultiScale( d_frame, found_locations );// 绘制检测结果for ( const auto& r : found_locations ){cv::rectangle( frame, r, cv::Scalar( 0, 0, 255 ), 2 );}cv::imshow( "Pedestrian Detection", frame );cv::waitKey( 0 );return 0;
}

运行结果

在这里插入图片描述
效果仅供演示,要想效果专业一下,得自己去训练模型了。

相关文章:

OPenCV CUDA模块目标检测----- HOG 特征提取和目标检测类cv::cuda::HOG

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::HOG 是 OpenCV 的 CUDA 模块中对 HOG 特征提取和目标检测 提供的 GPU 实现。它与 CPU 版本的 cv::HOGDescriptor 类似&#xff0c;但利…...

MATLAB读取文件内容:Excel、CSV和TXT文件解析

MATLAB读取文件内容&#xff1a;Excel、CSV和TXT文件解析 MATLAB 是一款强大的数学与工程计算工具&#xff0c;广泛应用于数据分析、模型构建和图像处理等领域。在处理实际问题时&#xff0c;我们常常需要从文件中读取数据进行分析。本文将介绍如何使用 MATLAB 读取常见的文件…...

Spring MVC 之 异常处理

使用Spring MVC可以很灵活地完成数据的绑定和响应&#xff0c;极大的简化了Java Web的开发。但Spring MVC提供的便利不仅仅如此&#xff0c;使用Spring MVC还可以很便捷地完成项目中的异常处理、自定义拦截器以及文件上传和下载等高级功能。本章将对Spring MVC提供的这些高级功…...

缓存控制HTTP标头设置为“无缓存、无存储、必须重新验证”

文章目录 说明示例核心响应头设置实现原理代码实现1. 原生 Node.js (使用 http 模块)2. Express 框架3. 针对特定路由设置 (Express) 验证方法&#xff08;使用 cURL&#xff09;关键注意事项 说明 日期&#xff1a;2025年6月4日。 对于安全内容&#xff0c;请确保缓存控制HT…...

ubuntu24.04 使用apt指令只下载不安装软件

比如我想下载net-tools工具包及其依赖包可以如下指令 apt --download-only install net-tools 自动下载的软件包在/var/cache/apt/archives/目录下...

macOS 上使用 Homebrew 安装redis-cli

在 macOS 上使用 Homebrew 安装 redis-cli&#xff08;Redis 命令行工具&#xff09;非常简单&#xff0c;以下是详细步骤&#xff1a; 1. 安装 Redis&#xff08;包含 redis-cli&#xff09; 运行以下命令安装 Redis&#xff1a; brew install redis这会安装完整的 Redis 服…...

计算机网络安全问答数据集(1788条) ,AI智能体知识库收集! AI大模型训练数据!

继续收集数据集&#xff0c;话不多说&#xff0c;见下文&#xff01; 今天分享一个计算机网络安全问答数据集&#xff08;1788条)&#xff0c;适用于AI大模型训练、智能体知识库构建、安全教育系统开发等多种场景&#xff01; 一、数据特点 结构清晰&#xff1a;共计1788条&…...

WinCC学习系列-高阶应用(WinCC REST通信)

WinCC作为一个经典SCADA系统&#xff0c;它是OT与IT数据无缝集成桥梁&#xff0c;自WinCC7.5版本开始&#xff0c;可以直接提供Rest服务用于其它系统数据访问和操作。 WinCC REST 服务允许外部应用程序访问 WinCC 数据。 外部应用程序可以通过 REST 接口读取和写入 WinCC 组态…...

八、Python模块、包

目录 1. 模块 1.1 什么是模块&#xff1f; 1.2 创建模块 1.3 导入模块 1.4 模块的命名空间 1.5 模块的搜索路径 1.6 模块的重新加载 2. 包 2.1 什么是包&#xff1f; 2.2 创建包 2.3 导入包中的模块 2.4 包的层次结构 3. 模块和包的管理 3.1 安装模块 3.2 卸载模…...

使用交叉编译工具提示stubs-32.h:7:11: fatal error: gnu/stubs-soft.h: 没有那个文件或目录的解决办法

0 前言 使用ST官方SDK提供的交叉编译工具、cmake生成Makefile&#xff0c;使用make命令生成可执行文件提示fatal error: gnu/stubs-soft.h: 没有那个文件或目录的解决办法&#xff0c;如下所示&#xff1a; 根据这一错误提示&#xff0c;按照网上的解决方案逐一尝试均以失败告…...

macOS 连接 Docker 运行 postgres,使用navicat添加并关联数据库

下载 docker注册一个账号&#xff0c;登录 Docker创建 docke r文件 mkdir -p ~/.docker && touch ~/.docker/daemon.json写入配置&#xff08;全量替换&#xff09; {"builder": {"gc": {"defaultKeepStorage": "20GB",&quo…...

指针的使用——基本数据类型、数组、结构体

1 引言 对于学习指针要弄清楚如下问题基本可以应付大部分的场景&#xff1a; ① 指针是什么&#xff1f; ② 指针的类型是什么&#xff1f; ③ 指针指向的类型是什么&#xff1f; ④ 指针指向了哪里&#xff1f; 2 如何使用指针 任何东西的学习最好可以总结成一种通用化的…...

TK海外抢单源码/指定卡单

​ 抢单源码&#xff0c;有指定派单&#xff0c;打针&#xff0c;这套二改过充值跳转客服 前端vue 后端php 两端分离 可二开 可以指定卡第几单&#xff0c;金额多少&#xff0c; 前后端开源 PHP7.2 MySQL5.6 前端要www.域名&#xff0c;后端要admin.域名 前端直接静态 伪静…...

Docker MCP 目录和工具包简介:使用 MCP 为 AI 代理提供支持的简单安全方法

目录 Model Context Protocol 势头强劲 — 还需要改进哪些?发现正确的、官方的和/或值得信赖的工具是很困难的复杂的安装和分发身份验证和权限不足Docker 如何帮助解决这些挑战在安全、隔离的容器中轻松发现和运行 MCP 服务器一键式 MCP 客户端集成,内置安全认证企业就绪的 M…...

【Linux】Linux 环境变量

参考博客&#xff1a;https://blog.csdn.net/sjsjnsjnn/article/details/125533127 一、环境变量 1.1 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数如&#xff1a;我们在编写C/C代码的时候&#xff0c;在链接的时候&am…...

OpenCV在图像上绘制文字示例

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 OpenCV中除了提供绘制各种图形的函数外&#xff0c;还提供了一个特殊的绘制函数&#xff0c;用于在图像上绘制文字。这个函数是putText()&#xff0c;它是命名空间cv中的函数&#xff0c;其声明如下&#xff…...

Java 抗量子算法:构建后量子时代的安全基石

一、量子计算带来的加密挑战 在传统加密体系中&#xff0c;RSA、ECC 等公钥算法依赖大数分解和离散对数问题的难解性。然而&#xff0c;量子计算机的 Shor 算法可在多项式时间内破解这些算法&#xff0c;使现有加密体系面临颠覆性威胁。例如&#xff0c;2048 位 RSA 密钥的破解…...

Kubernetes 集群到 Jumpserver

以下是使用 ServiceAccount Token&#xff08;令牌&#xff09; 连接 Kubernetes 集群到 Jumpserver 的 详细分步指南&#xff0c;包括权限配置、Token 获取和常见问题排查。 1. 创建 ServiceAccount 并分配权限 1.1 创建 ServiceAccount 在 Kubernetes 集群中创建一个专用于…...

Android7 Input(十)View 处理Input事件pipeline

概述: 本文主要描述View对InputEvent事件pipeline处理过程。 本文涉及的源码路径 frameworks/base/core/java/android/view/ViewRootImpl.java InputEvent事件处理 View处理input事件是调用doProcessInputEvents方法&#xff0c;如下所示: void doProcessInputEvents() {//…...

图像数据如何表示为概率单纯形

目录 图像数据灰度图像彩色图像概率单纯形条件应用场景 图像数据 图像数据通常由像素值组成&#xff0c;这些像素值可以是灰度值&#xff08;对于黑白图像&#xff09;或RGB值&#xff08;对于彩色图像&#xff09;。每个像素的值通常在0到255之间。为了将图像数据表示为概率单…...

(11)Service Mesh架构下Java应用实现零信任安全模型

Service Mesh架构下Java应用实现零信任安全模型 📌 TL;DR: 本文详细介绍如何在Service Mesh架构中实现零信任安全模型,包括身份认证、授权控制、加密通信和持续监控四大核心技术,以及与Istio、Envoy等组件的集成方案。 目录 零信任安全模型概述关键技术实现最佳实践Service…...

什么是内网映射?如何将内网ip映射到外网访问?

随着互联网科技和信息技术的快速发展&#xff0c;很多原理及技术开始被应用到互联网信息科技领域&#xff0c;其中内网iP映射就成为非常普通常见的一个操作。那么什么是内网ip映射&#xff1f;如何将内网ip映射到外网&#xff1f; 一、什么是内网ip映射&#xff1f; 简单理解…...

为什么要选择VR看房?VR看房有什么优点?

VR看房&#xff1a;革新传统&#xff0c;重塑体验 在当今社会&#xff0c;虚拟现实&#xff08;VR&#xff09;技术正以前所未有的速度渗透到我们生活的各个领域&#xff0c;其中VR看房作为房地产领域的重要创新。本文将讨论为什么要选择VR看房以及VR看房的主要优点&#xff0…...

linux 串口调试命令 stty

linux 串口调试命令 stty 文章目录 linux 串口调试命令 sttystty 常见命令选项&#xff1a;常用参数&#xff1a;一次性设置串口所有常见参数总结 stty&#xff08;设置终端行模式&#xff09;命令是用来配置终端设备&#xff08;包括串口设备&#xff09;的输入和输出行为的工…...

C++STL-vector的使用

vector的定义方式 方式1&#xff1a;构造某一个类型的空容器 vector<int> v1;//构造一个int类型的空容器 方式2&#xff1a;构造一个含有n个val的某类型容器 vector<int> v2(10, 2);//构造一个含有10个2的int类型的容器 方式3&#xff1a;拷贝构造某类型容器 …...

图简记。。

模仿&#xff1a; algorithm-journey/src/class059/Code01_CreateGraph.java at main algorithmzuo/algorithm-journey Code01_CreateGraph C语言&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAXN 11 #define MAX…...

pytorch基本运算-范数

引言 前序学习进程中&#xff0c;已经对pytorch基本运算有了详细探索&#xff0c;文章链接有&#xff1a; 基本运算 广播失效 乘除法和幂运算 hadamard积、点积和矩阵乘法 上述计算都是以pytorch张量为运算元素&#xff0c;这些张量基本上也集中在一维向量和二维矩阵&#x…...

uefi协议设计目的

在EDK2的术语体系中&#xff0c;GUID定义的是协议的标识符&#xff0c;而具体实现的函数集合称为协议的实现。它们是同一协议的不同抽象层次&#xff0c;以下是详细解释&#xff1a; 1. 协议&#xff08;Protocol&#xff09;的两层含义 (1) 协议规范&#xff08;接口定义&am…...

springcloud openfeign 偶现 Caused by: java.net.UnknownHostException

背景 最近查看日志发现某服务偶现Caused by: java.net.UnknownHostException 同时查看eureka的access.log 出现如下异常 10.xxx.xxx.xxx - - [27/May/2025:23:57:29 0800] “PUT /eureka/apps/{appName}/{host}:xxx-job:8082?statusUP&lastDirtyTimestamp1748351637173 H…...

Transformer实战——词嵌入技术详解

Transformer实战——词嵌入技术详解 0. 前言1. 词嵌入基础2. 分布式表示3. 静态嵌入3.1 Word2Vec3.2 GloVe 4. 使用 Gensim 构建词嵌入5. 使用 Gensim 探索嵌入空间6. 动态嵌入小结系列链接 0. 前言 在本节中&#xff0c;我们首先介绍词嵌入的概念&#xff0c;然后介绍两种实现…...