Python Opencv实践 - HoG特征计算

news2024/12/23 14:18:06

参考资料:https://www.cnblogs.com/alexme/p/11361563.html
         https://blog.csdn.net/qq_43348528/article/details/108638030

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
from skimage import exposure
from skimage.feature import hog
from skimage import data,color,exposure

img = cv.imread("../SampleImages/tifa.jpg", cv.IMREAD_COLOR)
plt.imshow(img[:,:,::-1])

#转换为灰度图
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
plt.imshow(img_gray, plt.cm.gray)

#HoG特征计算
#参考资料:https://www.cnblogs.com/alexme/p/11361563.html
#         https://blog.csdn.net/qq_43348528/article/details/108638030
#1. 创建HoG对象
#   hog = cv.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins)
#   winSize:检测窗口大小
#   blockStride:block块的滑动步长
#   cellSize:cell单元大小
#   nbins:统计梯度的方向数目,一般为9,即一个cell统计9个角度范围的梯度直方图
winSize = (64,128)
blockSize = (16,16)
blockStride = (8,8)
cellSize = (8,8)
nbins = 9
hog_obj = cv.HOGDescriptor(winSize, blockSize, blockStride, cellSize, nbins)
#2. 计算HoG特征
#   hogDes = hog.compute(img,winStride,padding)
#   img:原图
#   winStride:检测窗口的滑动步长
#   padding:填充,在图像周围填充点的边界处理
#   返回hogDes:对整幅图像的HoG特征描述符
hogDes = hog_obj.compute(img_gray, winStride=(8,8))
#使用OPENCV的HOGDescriptor不能将HOG处理后的梯度直方图结合原图显示
print("HogDes Size:",hogDes.size)
print(hogDes)

#使用skimage
fd,hog_image = hog(img_gray, orientations=8, pixels_per_cell=(16,16), cells_per_block=(1,1), visualize=True)
hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0,0.02))
#叠加HoG梯度直方图到图像上
img_hog_display = img_gray * hog_image_rescaled
plt.figure(figsize=(16,16), dpi=80)
plt.imshow(img_hog_display, plt.cm.gray)

 

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

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

相关文章

线段树上树剖再拿线段树维护:0914T4

cp 一种常见套路: 如果在线段树上进行一段区间修改,那么必然是一段右节点一段左节点 这个过程其实就是zkw的本质 下面都要用zkw来理解 考虑原题,有一棵不规则的线段树 类似zkw,在这类题目中,我们要先把开区间变成闭…

华为云Stack的学习(六)

七、华为云Stack计算服务介绍 1.计算服务整体介绍 2.弹性云服务器ECS ECS(Elastic Cloud Server),即弹性云服务器,是由vCPU、内存、磁盘等组成的,获取方便、弹性可扩展、按需使用的、虚拟的计算服务器。 ECS只需要花…

【深度学习】 Python 和 NumPy 系列教程(十四):Matplotlib详解:1、2d绘图(下):箱线图、热力图、面积图、等高线图、极坐标图

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 0. 设置中文字体 1-5. 折线图、散点图、柱状图、直方图、饼图 6. 箱线图(Box Plot) 7. 热力图(Heatmap) 8. 面积图(Area Plot) 9. 等…

Zabbix“专家坐诊”第203期问答汇总

问题一 Q:用的模板,没用创建动作,但是触发器触发了我钉钉直接被通知了,怎么取消模板自带的动作? A:没有动作是不会触发事件告警的 ,确定是从这个平台推出的钉钉消息?或者看下zabbix…

【操作系统】进程的通信IPC

进程通信是指进程之间的信息交换。 低级通信方式:PV操作 高级通信方式:1.共享存储2.消息传递3.管道通信 共享存储 低级数据结构共享,高级存储区共享。 对共享空间进行读写操作时,需要用到互斥工具。 消息传递 利用发送消息和…

Leetcode算法入门与数组丨3. 数组基础

文章目录 前言1 数组简介2 数组的基本操作2.1 访问元素2.2 查找元素2.3 插入元素2.4 改变元素2.5 删除元素 3 总结task03task04 前言 Datawhale组队学习丨9月Leetcode算法入门与数组丨打卡笔记 这篇博客是一个 入门型 的文章,主要是自己学习的一个记录。 内容会参…

Matlab图像处理-三原色

三原色 根据详细的实验结果,人眼中负责颜色感知的细胞中约有65%对红光敏感,33%对绿光敏感,只有2%对蓝光敏感。正是人眼的这些吸收特性决定了所看到的彩色是一般所谓的原色红(R)、绿(G)和蓝&…

十四、流式编程(1)

本章概要 流支持流创建 随机数流int 类型的范围generate()iterate()流的建造者模式Arrays正则表达式 集合优化了对象的存储,而流(Streams)则是关于一组组对象的处理。 流(Streams)是与任何特定存储机制无关的元素序列…

【2023】windows下安装libevent

Windows安装libevent 1.安装Visual Studio2.安装openssl第一种安装方式:[简便安装](https://slproweb.com/products/Win32OpenSSL.html)第二种:自己编译openssl 3.libevent下载libevent修改文件1.下边三个文件加入宏定义 #define _WIN32_WINNT 0x05002.修…

基于卷积神经网络的手写字体识别(详细笔记)

主要参考博客: 1、 基于卷积神经网络的手写数字识别(附数据集完整代码操作说明) 2、用PyTorch实现MNIST手写数字识别(最新,非常详细) 基于卷积神经网络的手写字体识别——目录 1 前言1.1 实现效果1.2 学习背…

国产洗碗机打响超越战

“征服世界的将是这样一些人:开始的时候,他们试图找到梦想中的乐园。最终,当他们无法找到时,就亲自创造了它。”诺贝尔文学奖获得者萧伯纳的这句话,适用于许多中国行业和企业,洗碗机就是其中之一。 对热爱…

十进制小数转换为单双精度浮点数方法

1 将十进制小数转换为单精度浮点数的方法如下: 2. 将十进制小数转换为双精度浮点数的方法如下: 和单精度浮点值转换一样

前端Layui框架介绍

当涉及到前端UI框架时,Layui(简称layui)是一个备受欢迎的框架之一。在这篇博客中,我们将深入了解layui,包括其市场占有率、开发语言、使用场景、框架特点以及一些使用案例。 1. 市场占有率 Layui 是一款流行的前端UI框…

(纯干货建议收藏)大型字符串模拟-超强超全函数技巧总结

这篇文章将会总结一些处理字符串、进制转换等等的常见的、非常有用的技巧和函数。后续会随时更新本文章,希望大家收藏、留言,一起学习进步! 对于特别简单的函数,就不写函数的详细原型啦! 具体包含四部分,…

Xilinx FPGA未使用管脚上下拉状态配置(ISE和Vivado环境)

文章目录 ISE开发环境Vivado开发环境方式1:XDC文件约束方式2:生成选项配置 ISE开发环境 ISE开发环境,可在如下Bit流文件生成选项中配置。 右键点击Generate Programming File,选择Process Properties, 在弹出的窗口选…

《程序员职场工具库》如何优化你的工作 —— PDCA 循环

PDCA 循环简介 PDCA 循环是一种以持续改进为核心思想的管理方法,在全球各个领域得到广泛的应用。它还有好几个别称,叫“质量环”,也叫“戴明环”,也有叫“持续改进螺旋”。 PDCA 循环由四个步骤组成: 计划&#xff…

基于SSM+Vue的中国咖啡文化宣传网站

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用vUE技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

vector模拟实现——关于模拟中的易错点

前言 vector 本质上类似数组,也可以理解为一种泛型的 string。string 只能存储 char 类型,但是 vector 支持各种内置类型和自定义类型。本次将围绕模拟实现 vector 中遇到的问题进行分析。 文章目录 前言一、确定思路二、实现过程2.1 查阅文档2.2 验证…

4-3 nn.functional和nn.Module

一,nn.functional 和 nn.Module 前面我们介绍了Pytorch的张量的结构操作和数学运算中的一些常用API。利用这些张量的API我们可以构建出神经网络相关的组件(如激活函数,模型层,损失函数)。 其实:Pytorch和神经网络相关的功能组件大…

中小企业数字化转型难?为什么不试试“企业级”无代码平台

首先,让我们思考一下,中小企业为什么要进行数字化转型?随着全球经济的数字化趋势日益明显,中小企业作为经济的重要组成部分,其数字化转型已成为推动经济高质量发展的关键。数字技术可以帮助中小企业提高生产效率、降低…