opencv特征检测 HOG特征算法

news2024/7/6 17:59:39

1 HOG特征简介

Hog 算法的工作原理是创建图像中梯度方向分布的柱状图,然后以一种非常特殊的方式对其进行归一化。这种特殊的归一化使得Hog 能够有效地检测物体的边缘,即使在对比度很低的情况下也是如此。这些标准化的柱状图被放在一个特征向量(称为 HOG 描述符)中,可以用来训练机器学习算法,例如支持向量机(SVM),以根据图像中的边界(边)检测对象。由于它的巨大成功和可靠性,HOG 已成为计算机视觉中应用最广泛的目标检测算法之一。

特征描述符是图像或图像补丁的表示形式,它通过提取有用信息并丢弃无关信息来简化图像。

  • 通常,特征描述符将大小W x H x 3(通道)的图像转换为长度为n的特征向量/数组。对于 HOG 特征描述符,输入图像的大小为 64 x 128 x 3,输出特征向量的长度为 3780。
  • 在HOG特征描述符中,梯度方向的分布(直方图)被用作特征。图像的渐变(x和y导数)很有用,因为边缘和角落(强度突然变化的区域)周围的梯度大小很大,我们知道边缘和角落比平面区域包含更多关于物体形状的信息。
  • HOG(Histogram of Oriented Gridients的简写)特征检测算法,最早是由法国研究员Dalal等在CVPR-2005上提出来的,一种解决人体目标检测的图像描述子,是一种用于表征图像局部梯度方向和梯度强度分布特性的描述符。其主要思想是:在边缘具体位置未知的情况下,边缘方向的分布也可以很好的表示行人目标的外形轮廓。

2 HOG算法实现

2.1 实现流程

HOG特征提取的大致流程

本文将通过hog特征来识别人像

通过HOG特征提取+SVM训练,可以得到很好的效果

2.2 实现代码

import cv2 as cv

# 主程序入口
if __name__ == '__main__':
    # 读取图像
    src = cv.imread("people.png")
    cv.imshow("input", src)
    # HOG + SVM
    hog = cv.HOGDescriptor()
    hog.setSVMDetector(cv.HOGDescriptor_getDefaultPeopleDetector())
    # Detect people in the image
    (rects, weights) = hog.detectMultiScale(src,
                                            winStride=(4, 4),
                                            padding=(8, 8),
                                            scale=1.25,
                                            useMeanshiftGrouping=False)
    # 矩形框
    for (x, y, w, h) in rects:
        cv.rectangle(src, (x, y), (x + w, y + h), (0, 255, 0), 2)
    # 显示
    cv.imshow("hog-detector", src)
    cv.waitKey(0)
    cv.destroyAllWindows()

实现结果如下:

原图

结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

51单片机的数字时钟系统【含仿真+程序+报告】

51单片机的数字时钟系统【含仿真程序报告】 1、 系统组成2、功能概述3、仿真4、程序代码5、报告6、资源链接 1、 系统组成 该系统由AT89C51单片机DS1302时钟模块按键模块DS18B20LCD显示模块构成。 2、功能概述 可显示实时的日期 包括 年-月-日 时分秒 星期 农历时间DS18B20室…

将图像2D转换为3D--LeiaPix Converter

LeiaPix Converter是一款免费的在线图像处理工具,可帮助用户将2D图像实时转换为精美的3D光场图像。 它使用由Leia开发的专有算法,为照片、插画和艺术作品等2D图像添加深度和立体感,目前是完全免费的。 LeiaPix Converter 的特点 多格式转换…

安全多方计算、联邦学习和可信执行环境

目录 隐私计算的三大技术流派:联邦学习、安全多方计算、可信计算 隐私计算的三大技术流派:联邦学习、安全多方计算、可信计算 1.多方安全计算,由姚期智院士于1982年首次提出,通过设计特殊的加密算法和协议,在无可信第…

Java 已知文件路径参数,用两种方法获取文件名

一、先获取带扩展名的fileName String filePath "D:\\manage\\uploadFile\\2023-06-28283\\初测.xlsx"; File file new File(filePath); // 或者 Path path Paths.get(filePath);String fileName1 file.getName(); System.out.println(fileName1);Path fileName…

Jmeter线程组配置

目录 前言: 一、线程组配置字段说明 二、线程组配置示例 前言: JMeter是一款开源的压力测试工具,被广泛应用于测试Web应用程序的性能和负载能力。其中线程组是JMeter中最基本、最重要的功能之一。线程组用于模拟多个并发用户对目标应用程…

Bryntum Scheduler Pro 5.3.5 Crack-专业调度组件

BRYNTUM Scheduler Pro调度程序专业版 专业的日程安排小部件 一个专业有大脑的调度UI组件。Scheduler Pro 可帮助您安排任务,同时考虑资源和任务的可用性。 连接您的任务 让 Scheduler Pro 处理剩下的事情。它将根据您定义的链接安排您的任务并遵守任何任务限制。这…

echarts——折线图点击线触发函数getZr()——技能提升

今天看到技术群里在讨论echarts中的折线图,有人遇到一个功能就是点击折线要触发点击事件,但是官网上的click点击事件只针对折线的拐点。 但是有人提出是可以通过getZr()方法来实现 网上也确实有大神提出一样的解决方法,链接如下&#xff1…

属鸡的脾气性格怎么样?

有的人认为属鸡的人脾气暴躁,而有的认为属鸡的人性格温和, 其实属鸡的人都有两面性,对好人善良温情,对坏人则腹黑邪恶,是不是很惊讶?古人认为鸡有预报能力,此种预言能力在鸡年生的人身上也会出现…

Stable Diffusion 使用outpainting扩展图像

通常SD可以应用绘制的图像是固定分辨率的,但是如果想要超出这个分辨率的话那就要使用一些方法,并且如果还想保持这些图片的连贯性,例如背景就要使用到outpainting。 文章目录 操作流程准备图像 操作流程 准备图像 首先将需要扩展边缘的图像…

能查看历史记录的好用的笔记app是哪款?

当我回顾自己经常做笔记的习惯时,我发现一个问题困扰着我:如何方便地查看和管理历史记录?因为对于我这样一个频繁记录学习和工作笔记的人来说,回顾过去的记录是一种宝贵的学习和反思机会。能查看历史记录的好用的笔记app是哪款&am…

Junit基本使用

文章目录 0. 了解Junit51. 注解2. 断言3. 用例执行顺序4. 测试套件(Suite)5.参数化 0. 了解Junit5 Java版本最低要求为8。Junit是一个开源的java语言的单元测试框架。java方向使用最广泛的单元测试框架。使用java开发者都应当学习Junit并且掌握单元测试…

CDH 之 Sentry 安装失败 Unable to find the MySQL JDBC driver

安装报错如下: 详细日志: Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat com.cloudera.cmf.service.hive.HiveMetastoreDbUtil.countTables(HiveMetastoreDbUtil.java…

stm32GPIO点亮led的小发现

偶然发现点亮led的小困惑,现在解决了。我们知道stm32中,GPIO端口的内部一般是接高电平(3.3v),其外部就是我们肉眼所看到的PA1等标号。 1、写法一 led的正极接3.3v,这样当A1引脚输出低电平0(即GPIO_ResetBi…

vs中编译时出现error LNK1104: 无法打开文件*.exe

因为此时有一个VS工程在运行了,将其关闭就可以了。 参考:vs中编译时出现error LNK1104: 无法打开文件*.exe

云原生|kubernetes|centos7下的kubeadm部署的集群内在线部署kubesphere(外部etcd)

前言: 本文将主要就在centos7操作系统下已有的一个利用kubeadm部署的集群内在线安装kubesphere做一个介绍,该kubernetes集群是使用的etcd外部集群。 kubernetes集群的搭建本文不做过多介绍,具体的搭建流程见我的博客: 云原生|k…

卷积层|Convolution|知识补充

CNN中增加了Convolution层和Pooling层; CNN中层的连接顺序是“Convolution-ReLu-Pooling”。 全连接层存在的问题: 数据的形状被“忽视”了,比如,输入的数据是一个三维的图像信息,但是在向全连接层输入时,…

【样式 支付下单 弹窗】静态页面,订单结算,确认支付,付款,收款方式

效果图展示 uview 2.0 uniapp <template><view class""><u-popup :show"show" close"close" :round"10" closeable :closeOnClickOverlayfalse><view class"pop"><view class"title&q…

CB2401与RFX2401C的兼容区别对比

PIN TO PIN直接兼容RFX2401C的单片射频收发芯片&#xff0c;可支持BT、BLE、ZIGBEE、ISM 2.4G非标协议。CB2401架构集成了 PA、LNA、发送和接收开关电路&#xff0c;输出功率和通信频道可以通过程序进行配置。 由于该芯片有非常优越的性能&#xff0c;高灵敏度和效率&#xff0…

智能饮品机器人来跨界,点赋科技实现交叉经营

近年来&#xff0c;随着科技的不断进步&#xff0c;智能机器人在各个领域得到了广泛应用。其中&#xff0c;智能饮品机器人成为了一个备受关注的创新点。点赋科技通过将机器人技术和饮品业务相结合&#xff0c;实现了跨界交叉经营&#xff0c;给消费者带来了全新的体验。 传统的…

Elasticsearch:使用 Elasticsearch 矢量搜索和 FastAPI 构建文本搜索应用程序

在我的文章 “Elastic&#xff1a;开发者上手指南” 的 “NLP - 自然语言处理及矢量搜索”&#xff0c;我对 Elastic Stack 所提供的矢量搜索有大量的描述。其中很多的方法需要使用到 huggingface.co 及 Elastic 的机器学习。这个对于许多的开发者来说&#xff0c;意味着付费使…