38 Opencv HOG特征检测

文章目录

  • HOGDescriptor 构造函数
  • setSVMDetector 设置支持向量机(SVM)检测器,用于目标检测。
  • compute 用于计算图像区域的HOG描述符。
  • detectMultiScale 多尺度检测目标。
  • 示例

HOGDescriptor 构造函数

HOGDescriptor();
HOGDescriptor(const Size& _winSize, const Size& _blockSize, const Size& _blockStride, const Size& _cellSize, int _nbins, double _alpha, double _L2HysThreshold,bool _gammaCorrection, NHistType _histogramNormType);_winSize: 指定窗口大小,默认是 64x128 像素。_blockSize: 指定块的大小,默认是 16x16 像素。一个块由多个单元格(cell)组成。_blockStride: 指定在计算下一个块时块之间滑动的步长,默认是 8x8 像素。_cellSize: 指定每个单元格的大小,默认是 8x8 像素。每个单元格内的像素点将被用来计算梯度直方图。_nbins: 指定每个单元格中梯度方向的数量,默认是 9 个bin。_alpha: 权重缩放因子,通常设置为 1.0。_L2HysThreshold: L2 范数阈值,用于防止光照变化影响。默认值通常是 0.2。_gammaCorrection: 是否应用伽马校正预处理。默认是 false。_histogramNormType: 直方图归一化类型。

setSVMDetector 设置支持向量机(SVM)检测器,用于目标检测。

void setSVMDetector(vector<float> detector)
detector: SVM权重向量,可以通过训练获得或使用OpenCV提供的默认检测器。

compute 用于计算图像区域的HOG描述符。

void compute(InputArray img, vector<float>& descriptors, const Size winStride=Size(), const vector<Point>& locations=vector<Point>()); img: 输入图像,应该为灰度图像。descriptors: 输出的HOG描述符。winStride: 窗口滑动步长。locations: 指定需要计算的特定位置。

detectMultiScale 多尺度检测目标。

void detectMultiScale(Mat image, vector<Rect>& foundLocations, double hitThreshold=0, Size winStride=Size(),Size padding=Size(), double scale=1.05, int finalThreshold=2,bool useMeanshiftGrouping=false)image: 输入图像。foundLocations: 输出矩形框列表,表示检测到的目标位置。hitThreshold: 决定检测是否成功的阈值。winStride: 滑动窗口的步长。padding: 检测窗口的填充大小。scale: 图像金字塔的比例因子。finalThreshold: 需要的邻居数量。useMeanshiftGrouping: 是否使用均值漂移分组来合并候选矩形框。

示例

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, char** argv) {// 读取图像文件 "D:/vcprojects/images/HOGV.png" 到 Mat 对象 src 中Mat src = imread("D:/vcprojects/images/HOGV.png");// 如果图像加载失败,则输出错误信息并返回 -1 终止程序if (src.empty()) {printf("could not load image...\n");return -1;}// 创建一个名为 "input image" 的窗口,大小根据图像自动调整namedWindow("input image", CV_WINDOW_AUTOSIZE);// 在 "input image" 窗口中显示图像 srcimshow("input image", src);// 初始化 HOGDescriptor,默认设置用于检测人的SVM检测器HOGDescriptor hog = HOGDescriptor();hog.setSVMDetector(hog.getDefaultPeopleDetector());// 定义一个向量 foundLocations 来存储检测到的人体矩形框的位置vector<Rect> foundLocations;// 使用 detectMultiScale 函数在图像 src 中查找人体// 参数解释:输入图像、输出矩形框列表、检测阈值、窗口滑动步长、最小窗口尺寸、搜索窗口每次迭代的增长率、需要的邻居数量hog.detectMultiScale(src, foundLocations, 0, Size(8, 8), Size(32, 32), 1.05, 2);// 复制源图像到结果图像 result 中,以便可以在上面绘制检测到的对象Mat result = src.clone();// 遍历所有检测到的矩形框,在结果图像上绘制红色边框for (size_t t = 0; t < foundLocations.size(); t++) {rectangle(result, foundLocations[t], Scalar(0, 0, 255), 2, 8, 0);}// 创建一个名为 "HOG SVM Detector Demo" 的窗口来显示检测结果namedWindow("HOG SVM Detector Demo", CV_WINDOW_AUTOSIZE);// 在 "HOG SVM Detector Demo" 窗口中显示带有矩形框的结果图像imshow("HOG SVM Detector Demo", result);// 等待用户按键事件,参数为0表示无限期等待waitKey(0);// 正常退出程序return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/501395.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SweetAlert2 - 漂亮可定制的 JavaScript 弹窗

https://sweetalert2.github.io/ https://github.com/sweetalert2/sweetalert2 安装&#xff1a; npm install sweetalert2封装&#xff1a; import Swal from sweetalert2/dist/sweetalert2.js import sweetalert2/src/sweetalert2.scss/*** * param {string} icon - ico…

ros2 py文件间函数调用

文章目录 写在前面的话生成python工程包命令运行python函数命令python工程包的目录结构目录结构&#xff08;细节&#xff09; 报错 1&#xff08; no module name ***&#xff09;错误示意 截图终端输出解决方法 报错 2&#xff08; AttributeError: *** object has no attrib…

CentOS7安装配置JDK保姆级教程(图文详解)

1. 安装OpenJDK 直接使用yum命令安装&#xff0c;这里安装的版本是openjdk 11 &#xff08;具体版本根据自己操作系统选择&#xff09; # 查找安装包 yum search java-11# 安装jdk, 同时安装了依赖 java-11-openjdk-headless yum install java-11-openjdk.x86_64# 安装开发工…

默认ip无法访问,利用dhcp功能获取ip进行访问的方法

应用场景&#xff1a; ac的默认ip如192.168.1.1在pc与ac的eth2以后网口直连无法ping通&#xff0c;而且pc改为dhcp自动获取ip也获取不到ip地址&#xff0c;无法进行web配置和命令行操作。 原因是ac或其他设备被修改了默认ip或者端口vlanid&#xff0c;现在的端口vlan对应子接…

库伦值自动化功耗测试工具

1. 功能介绍 PlatformPower工具可以自动化测试不同场景的功耗电流&#xff0c;并可导出为excel文件便于测试结果分析查看。测试同时便于后续根据需求拓展其他自动化测试用例。 主要原理&#xff1a;基于文件节点 coulomb_count 实现&#xff0c;计算公式&#xff1a;电流&…

QQ长截屏

QQ长截屏 第一步&#xff1a;CtrlAltA 第二步&#xff1a;点击剪刀之后&#xff0c;再滑动滚轮就可以了。 展示

高效管理 Nginx 的利器:nginxWebUI 指南和 Docker 部署安装过程

前言 Nginx WebUI 是一个为 Nginx 提供图形化管理界面的工具。通过 WebUI&#xff0c;用户可以轻松管理 Nginx 配置&#xff0c;而无需直接编辑配置文件&#xff0c;尤其适合新手用户和频繁修改配置的场景。 官网文档&#xff1a;nginxWebUI - 文档 本文将分享为什么选择 ngin…

MySQL 05 章——排序与分页

一、排序 &#xff08;1&#xff09;排序规则 使用ORDER BY子句排序 ASC&#xff08;ascend&#xff09;&#xff1a;升序&#xff08;从上至逐渐升高&#xff09;DESC&#xff08;descend&#xff09;&#xff1a;降序&#xff08;从上至下逐渐降低&#xff09;​​​​​​…

【C语言】_指针运算

目录 1. 指针-整数 2. 指针-指针 2.1 指针-指针含义 2.2 指针-指针运算应用&#xff1a;实现my_strlen函数 3. 指针的关系运算&#xff08;大小比较&#xff09; 1. 指针-整数 联系关于指针变量类型关于指针类型和指针-整数相关知识&#xff1a; 原文链接如下&#xff1…

Wend看源码-Java-Executor异步执行器学习

摘要 本文主要介绍了Java.util.concurrent包所提供的 Executor 异步执行器框架&#xff0c;涵盖了相关的接口和类。 并发执行器类图 图1 java 并发执行器相关类图 Executor 接口 Executor 接口提供了一种将任务的提交与任务的实际执行机制分离开来的方法。它只有一个方法 exe…

2025考研江南大学复试科目控制综合(初试807自动控制原理)

​ 2025年全国硕士研究生招生考试江南大学考点 一年年的考研如期而至&#xff0c;我也变成了研二了&#xff0c;作为2次考研经历的学长&#xff0c;总是情不自禁地回想起自己的考研经历&#xff0c;我也会经常从那段经历中汲取力量。我能理解大多数考生考完后的的迷茫无助&…

基于深度学习算法的AI图像视觉检测

基于人工智能和深度学习方法的现代计算机视觉技术在过去10年里取得了显著进展。如今&#xff0c;它被广泛用于图像分类、人脸识别、图像中物体的识别等。那么什么是深度学习&#xff1f;深度学习是如何应用在视觉检测上的呢&#xff1f; 什么是深度学习&#xff1f; 深度学习是…

lec5-传输层原理与技术

lec5-传输层原理与技术 1. 传输层概述 1.1. 关键职责 flow control&#xff0c;流量控制reliability&#xff0c;可靠性 1.2. TCP与UDP对比 面向连接 / 不能连接对数据校验 / 不校验数据丢失重传 / 不会重传有确认机制 / 没有确认滑动窗口流量控制 / 不会流量控制 1.3. 关…

学习C++:数组

数组&#xff1a; 一&#xff0c;概述 所谓数组&#xff0c;就是一个集合&#xff0c;里面存放了相同类型的元素 特点1&#xff1a;数组中的每个数据元素都是相同的数据类型 特点2&#xff1a;数组是由连续的内存位置组成的 二&#xff0c;一维数组 1.一维数组定义方式 三…

Formality:官方Tutorial(一)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 本文是对Synopsys Formality User Guide Tutorial中第一个实验的翻译&#xff08;有删改&#xff09;&#xff0c;Lab文件可以从以下链接获取。 Formality官方Tu…

STM32 拓展 RTC(实时时钟)

RTC简介 RTC(Real Time Clock,实时时钟)。是一个掉电后仍然可以继续运行的独立定时器。 RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。 RTC实质…

在 macOS 上,你可以使用系统自带的 终端(Terminal) 工具,通过 SSH 协议远程连接服务器

文章目录 1. 打开终端2. 使用 SSH 命令连接服务器3. 输入密码4. 连接成功5. 使用密钥登录&#xff08;可选&#xff09;6. 退出 SSH 连接7. 其他常用 SSH 选项8. 常见问题排查问题 1&#xff1a;连接超时问题 2&#xff1a;权限被拒绝&#xff08;Permission denied&#xff09…

Scrum中敏捷项目经理(Scrum Master)扮演什么角色?

敏捷开发模式已经逐渐被主流的软件研发团队所接受&#xff0c;其中Scrum是最具代表性的敏捷方法之一。Scrum框架中有三个核心角色&#xff1a;Product Owner&#xff08;PO&#xff09;、Scrum Master&#xff08;SM&#xff09;和Development Team&#xff08;DT&#xff09;。…

沙箱模拟支付宝支付3--支付的实现

1 支付流程实现 演示案例 主要参考程序员青戈的视频【支付宝沙箱支付快速集成版】支付宝沙箱支付快速集成版_哔哩哔哩_bilibili 对应的源码在 alipay-demo: 使用支付宝沙箱实现支付功能 - Gitee.com 以下是完整的实现步骤 1.首先导入相关的依赖 <?xml version"1…

Yocto项目 - 详解PACKAGECONFIG机制

引言 Yocto项目是一个强大的嵌入式Linux开发工具&#xff0c;广泛应用于创建定制的嵌入式Linux发行版。在Yocto中&#xff0c;配置和定制化构建系统、软件包、以及生成适用于特定硬件的平台镜像是非常重要的。PACKAGECONFIG是Yocto项目中用于灵活启用或禁用软件包特性的强大工…