Opencv | 直方图

news2024/10/7 2:27:03

这里写目录标题

  • 一. 直方图
    • 方法1
    • 方法2
    • 方法3
  • 二. 掩码区域的直方图绘制
  • 三. 直方图均衡化

一. 直方图

方法1

	cv.calcHist(images, channels, mask, histSize, ranges=None, accumulate=False)
	参数:
		images: 输入图像,可以是单个图像或图像的列表
		channels: 
			计算直方图的通道
				对于灰度图像,该值为0
				对于RGB彩色图像,可以传递一个包含三个元素的数组 [0, 1, 2],表示分别计算每个通道的直方图
		mask: 
			掩码图像,用于指定图像的哪个区域需要计算直方图
			如果不需要掩码,可以传递 None
		histSize:
			输出直方图的大小
				对于一维直方图,这是一个整数
				对于二维直方图,这是一个包含两个整数的元组
				对于三维直方图,这是一个包含三个整数的元组
		ranges: 
			可选参数,用于指定直方图的范围
			默认情况下,将使用图像的最小值和最大值
		accumulate: 
			可选参数,布尔值
				True:计算过程中将直方图累积到内部缓冲区中
	返回值:返回一个或多个计算出的直方图(取决于输入图像的数量)

方法2

	np.histogram(a, bins=10, range=None, normed=None, weights=None, density=None)
	参数:
		a: 输入数组
		bins: 可选参数,表示直方图的条形数(即分箱数量),默认为10
		range: 
			可选参数,表示直方图的最小值和最大值范围,格式为 (min, max)
			如果未指定,则使用 a 的最小值和最大值
		normed: 可选参数,布尔值。
			 	如果为 True,则返回的直方图高度将归一化,使得直方图的面积为1
		weights: 
			可选参数,表示每个元素的重要性(权重)
			默认情况下,所有元素的权重都是1
		density: 
			可选参数,布尔值
			如果为 True,则返回的直方图高度将乘以 bins 的数量,使得直方图下的总面积等于1,这通常与 normed 一起使用
	返回值: 返回两个数组,即直方图的高度和区间边界的数组

方法3

	np.bincount(arr, weights=None, minlength=0)
	参数:
		arr:输入的一维整数数组
		weights:
			可选参数
			它是一个形状与arr相同的数组,用于给arr中的每个元素指定权重
				若提供了weights,则bincount将计算加权值的出现次数
		minlength: 
			可选参数
			指定了输出数组的最小长度
				若值 > 0的值,则当max(输入数组) < minlength时,输出数组将用0填充到指定的最小长度
	返回值:
		一个一维数组
			长度为max(arr)+1 / minlength(取决于哪个更大)

二. 掩码区域的直方图绘制

	1. 创建与原图一致的shape
	2. 创建mask区域
	3. 构建mask区域图像,cv.bitwise_and( )
	4. 计算直方图

三. 直方图均衡化

实际上一个比较好的图像像素点应该在某一范围内,而不是限制于某个特定的小范围,因此对像素的直方图可以进行拉伸操作
在这里插入图片描述

	比如:
	一个偏暗的图像,像素基本上都在较小的位置
		增大像素,图像变量

因此,直方图均衡化操作是一个提高图像对比度的方式


感谢阅读🌼
如果喜欢这篇文章,记得点赞👍和转发🔄哦!
有任何想法或问题,欢迎留言交流💬,我们下次见!
本文相关代码存放位置
    【Opencv 图像变换代码实现

祝愉快🌟!


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

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

相关文章

Meta-Llama-3-8B-Instruct本地推理

Meta-Llama-3-8B-Instruct 本地推理 基础环境信息&#xff08;wsl2安装Ubuntu22.04 miniconda&#xff09; 使用miniconda搭建环境 (base) :~$ conda create --name pytorch212 python3.10 Retrieving notices: ...working... done Channels:- defaults Platform: linux-64 C…

清新优雅、功能强大的后台管理模板 | 开源日报 No.238

soybeanjs/soybean-admin Stars: 7.0k License: MIT soybean-admin 是一个基于 Vue3、Vite5、TypeScript、Pinia、NaiveUI 和 UnoCSS 的清新优雅且功能强大的后台管理模板。 使用最新流行的技术栈&#xff0c;如 Vue3、Vite5 和 TypeScript。采用清晰的项目架构&#xff0c;易…

SRAM控制原理与读写实例

本文对SRAM进行介绍&#xff0c;并对其内部的存储器矩阵、地址译码器、列I/O及I/O数据电路、控制电路、SRAM的读写流程进行简要介绍&#xff0c;并给出SRAM IS62LV256-45U读写实例。 文章目录 存储容量的计算SRAM控制原理SRAM信号线存储器矩阵地址译码器、列I/O及I/O数据电路控…

开发总结-Dao层(Mapper层)

Mybatis-plus新用法 VehicleBO one vehicleService.getOne(Wrappers.<VehicleBO>lambdaQuery().eq(VehicleBO::getVin, reqVo.getVin()));boolean b bizAccountApplyService.remove(Wrappers.<BizAccountApplyBO>lambdaQuery().eq(BizAccountApplyBO::getId, 14…

工业级PDA手持机,信息时代的便捷工具

在当今信息快速发展的时代&#xff0c;各种先进技术不断涌现&#xff0c;为各个行业带来了巨大的变革和提升。工业级 PDA 手持机作为一种集多种功能于一身的便捷工具&#xff0c;正逐渐成为工业领域中不可或缺的一部分。 工业级 PDA 手持机是一种专门为工业应用设计的便携式数据…

提升编码技能:学习如何使用 C# 和 Fizzler 获取特价机票

引言 五一假期作为中国的传统节日&#xff0c;也是旅游热门的时段之一&#xff0c;特价机票往往成为人们关注的焦点。在这个数字化时代&#xff0c;利用爬虫技术获取特价机票信息已成为一种常见的策略。通过结合C#和Fizzler库&#xff0c;我们可以更加高效地实现这一目标&…

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现 摘要&#xff1a; 随着汽车电子技术的快速发展&#xff0c;车辆状态实时监控系统的需求日益增长。本文设计并实现了一种基于STM32单片机的汽车胎压、速度及状态监测系统。该系统能够实时监测汽车的胎压、速度以及其他…

Three.js杂记(十三)—— 包围盒

好久没有学习three.js了&#xff0c;现在再重新巩固并深入学习。荒废学习一年多了&#xff0c;希望现在为时未晚&#x1f4aa; 包围盒 包围盒按照字面理解就是包围一个物体的盒子&#xff0c;那就是一个长方形空间。 一般来说&#xff0c;包围盒可以用于&#xff1a; 物体之…

Redis__数据类型

文章目录 &#x1f60a; 作者&#xff1a;Lion J &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_69252724 &#x1f389; 主题&#xff1a;Redis__数据类型 ⏱️ 创作时间&#xff1a;2024年04月28日 ———————————————— 这里写目录标题 文…

Git零基础

Git工作流程图 操作指令 分支 、 指令总结 远程仓库

[C++] 类和对象 _ 剖析构造、析构与拷贝

一、构造函数 构造函数是特殊的成员函数&#xff0c;它在创建对象时自动调用。其主要作用是初始化对象的成员变量&#xff08;不是开辟空间&#xff09;。构造函数的名字必须与类名相同&#xff0c;且没有返回类型&#xff08;即使是void也不行&#xff09;。 在C中&#xff0…

222.完全二叉树的节点个数

题目链接 题目描述 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最…

vue2—— mixin 超级详细!!!

mixin Mixin是面向对象程序设计语言中的类&#xff0c;提供了方法的实现。其他类可以访问mixin类的方法而不必成为其子类 Mixin类通常作为功能模块使用&#xff0c;在需要该功能时“混入”&#xff0c;有利于代码复用又避免了多继承的复杂 vue中的mixin 先来看一下官方定义 mi…

【麒麟(Linux)系统远程连接到windows系统并进行文件传输】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言使用步骤总结 前言 一般来说&#xff0c;windows自带远程桌面&#xff0c;使用的RDP协议&#xff0c;Linux上支持RDP协议的软件很多&#xff0c;常用的是Remmi…

基于决策树的DDoS攻击检测与防护系统研究---实验/论文

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

【前端热门框架【vue框架】】——条件渲染和列表渲染的学习的秒杀方式

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;程序员-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;v…

HTTPS证书申请:相关流程及注意事项

申请HTTPS证书的过程主要包括以下几个步骤&#xff0c;以及一些需要注意的事项&#xff1a; 申请流程&#xff1a; 1. 选择证书类型和期限&#xff1a; - 根据需求选择合适的SSL证书类型&#xff0c;常见的有DV&#xff08;域名验证&#xff09;、OV&#xff08;组织验证&#…

Unity 问题之 开发应用在设备上运行闪屏花屏问题的分析处理

Unity 问题之 开发应用在设备上运行闪屏花屏问题的分析处理 目录 Unity 问题之 开发应用在设备上运行闪屏花屏问题的分析处理 一、简单介绍 二、问题现象 三、问题分析 四、使用空后处理&#xff0c;解决闪屏花屏的显示问题 五、空后处理完整代码 一、简单介绍 Unity 在…

鸿蒙开发HarmonyOS4.0入门与实践

鸿蒙开发HarmonyOS4.0 配合视频一起食用&#xff0c;效果更佳 课程地址&#xff1a;https://www.bilibili.com/video/BV1Sa4y1Z7B1/ 源码地址&#xff1a;https://gitee.com/szxio/harmonyOS4 准备工作 官网地址 鸿蒙开发者官网&#xff1a;https://developer.huawei.com/con…

使用FPGA发送一个经过曼彻斯特编码的伪随机序列

介绍 这几天突然就不知道要使用FPGA实现什么样的功能了,然后就跑去学习数电了,学的也是晕晕的。正好之前写了一个使用FPGA发送伪随机序列的代码,然后因为需要使用曼彻斯特编码,所以又加了一个模块吧,使得最后输出的波形经过曼彻斯特编码。 曼彻斯特编码 首先,曼彻斯特编…