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

Python Opencv实践 - 图像直方图均衡化

import cv2 as cv
import numpy as np
import matplotlib.pyplot as pltimg = cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)
print(img.shape)#图像直方图计算
#cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate)
#images:原图像(图像格式为 uint8 或 float32)。当传入函数时应该 用中括号 [] 括起来,例如:[img]。
#channels:同样需要用中括号括起来,它会告诉函数我们要统计那幅图 像的直方图。如果输入图像是灰度图,它的值就是 [0];如果是彩色图像 的话,传入的参数可以是 [0],[1],[2] 它们分别对应着通道 B,G,R。
#mask: 掩模图像。要统计整幅图像的直方图就把它设为 None。但是如 果你想统计图像某一部分的直方图的话,你就需要制作一个掩模图像,并 使用它。
#histSize:BIN 的数目。也应该用中括号括起来,例如:[256]。
#ranges: 像素值范围,通常为 [0,256]
#hist:是一个 256x1 的数组作为返回值,每一个值代表了与次灰度值对应的像素点数目。
#accumulate:是一个布尔值,用来表示直方图是否叠加。
#参考资料:https://blog.csdn.net/yukinoai/article/details/87900860
hist_b = cv.calcHist([img], [0], None, [256], [0,256])
hist_g = cv.calcHist([img], [1], None, [256], [0,256])
hist_r = cv.calcHist([img], [2], None, [256], [0,256])
#显示图像
fig,axes = plt.subplots(nrows=2, ncols=2, figsize=(10,10), dpi=100)
axes[0][0].imshow(img[:,:,::-1])
axes[0][0].set_title("Original")
axes[0][1].set_title("Original Histogram")
axes[0][1].plot(hist_b, color='b')
axes[0][1].plot(hist_g, color='g')
axes[0][1].plot(hist_r, color='r')#彩色图像直方图均衡化
#cv.equalizeHist(src)
#参考资料:https://blog.csdn.net/qq_37701443/article/details/103564379
def RGBImageHistEqualize(src):hsv = cv.cvtColor(src, cv.COLOR_RGB2HSV)channels = cv.split(hsv)#对亮度通道进行直方图均衡化cv.equalizeHist(channels[2], channels[2])hsv = cv.merge(channels)src = cv.cvtColor(hsv, cv.COLOR_HSV2RGB)return src
img_hist_equalized = RGBImageHistEqualize(img)
hist_equalized_b = cv.calcHist([img_hist_equalized], [0], None, [256], [0,256])
hist_equalized_g = cv.calcHist([img_hist_equalized], [1], None, [256], [0,256])
hist_equalized_r = cv.calcHist([img_hist_equalized], [2], None, [256], [0,256])#显示直方图均衡化后的结果
axes[1][0].imshow(img_hist_equalized[:,:,::-1])
axes[1][0].set_title("Equalized")
axes[1][1].set_title("Equalized Histogram")
axes[1][1].plot(hist_equalized_b, color='b')
axes[1][1].plot(hist_equalized_g, color='g')
axes[1][1].plot(hist_equalized_r, color='r')

 

 

 

相关文章:

Python Opencv实践 - 图像直方图均衡化

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#图像直方图计算 #cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate) #images&…...

GAN:对抗生成网络,前向传播和后巷传播的区别

目录 GAN:对抗生成网络 损失函数 判别器开始波动很大,先调整判别器 生成样本和真实样本的统一:真假难辨​编辑 文字专图片​编辑 头像转表情包​编辑 头像转3D​编辑 后向传播 1. 前向传播(forward) 2. 反向传播&…...

压力变送器的功能与应用

压力变送器是用于测量气体或者液体等介质压力的设备,能够将压力转化为4 G信号传输到监控平台,工作人员可以在电脑或者手机上登录平台查看监测到的数据,并根据数据制定下一步的计划。 压力变送器的功能: 压力变送器采用了高性能感…...

排序算法:选择排序

选择排序的思想是&#xff1a;双重循环遍历数组&#xff0c;每经过一轮比较&#xff0c;找到最小元素的下标&#xff0c;将其交换至首位。 public static void selectionSort(int[] arr) {int minIndex;for (int i 0; i < arr.length - 1; i) {minIndex i;for (int j i …...

Windows运行Spark所需的Hadoop安装

解压文件 复制bin目录 找到winutils-master文件hadoop对应的bin目录版本 全部复制替换掉hadoop的bin目录文件 复制hadoop.dll文件 将bin目录下的hadoop.dll文件复制到System32目录下 配置环境变量 修改hadoop-env.cmd配置文件 注意jdk装在非C盘则完全没问题&#xff0c;如果装在…...

KusionStack使用文档

下载安装 1. 安装 Kusionup 如果想自定义默认安装版本&#xff0c;可以运行下述命令&#xff08;将最后的 openlatest 替换为你想要默认安装的版本号就就行&#xff09;&#xff1a; curl -s "http://kusion-public.oss-cn-hzfinance.aliyuncs.com/cli/kusionup/script…...

ONLYOFFICE 文档如何与 Alfresco 进行集成

ONLYOFFICE 文档是一款开源办公套件&#xff0c;其是包含文本文档、电子表格、演示文稿、数字表单、PDF 查看器和转换工具的协作性编辑工具。要在 Alfresco 中使用 ONLYOFFICE 协作功能&#xff0c;可以将他们连接集成。阅读本文&#xff0c;了解这如何实现。 关于 ONLYOFFICE…...

PostgreSQL下载路径与安装步骤

PgSQL介绍 PgSQL和MySQL一样是一种关系模型的数据库&#xff0c;全称为PostgreSQL 数据库。 优势&#xff1a;PgSQL是一种可扩展、可靠、可定制的数据库管理系统&#xff0c;具有良好的数据完整性和安全性&#xff0c;支持多种操作系统&#xff0c;包括 Linux、Windows、MacOS …...

如何在PHP中编写条件语句

引言 决策是生活不可缺少的一部分。从平凡的着装决定&#xff0c;到改变人生的工作和家庭决定。在开发中也是如此。要让程序做任何有用的事情&#xff0c;它必须能够对某种输入做出响应。当用户点击网站上的联系人按钮时&#xff0c;他们希望被带到联系人页面。如果什么都没有…...

LLM架构自注意力机制Transformers architecture Attention is all you need

使用Transformers架构构建大型语言模型显著提高了自然语言任务的性能&#xff0c;超过了之前的RNNs&#xff0c;并导致了再生能力的爆炸。 Transformers架构的力量在于其学习句子中所有单词的相关性和上下文的能力。不仅仅是您在这里看到的&#xff0c;与它的邻居每个词相邻&…...

计算机网络 QA

DNS 的解析过程 浏览器缓存。当用户通过浏览器访问某域名时&#xff0c;浏览器首先会在自己的缓存中查找是否有该域名对应的 IP 地址&#xff08;曾经访问过该域名并且没有清空缓存&#xff09;系统缓存。当浏览器缓存中无域名对应的 IP 地址时&#xff0c;会自动检测用户计算机…...

安果天气预报 产品介绍

软件介绍版本号 2.0.5 安果天气预报&#xff1a;全世界覆盖&#xff0c;中国定制 想要查找北京、上海、纽约、东京还是巴黎的天气&#xff1f;一款简约的天气预 报应用为你呈现。专注于为用户提供纯净的天气体验&#xff0c;我们不发送任何打扰的通知。包含空气质量、能见度、…...

net start Mysql 启动服务时 ,显示“Mysql服务正在启动 Mysql服务无法启动 服务没有报告任何错误

一、问题 有时候&#xff0c;输入net start Mysql 启动服务时 mysql>net start Mysql 显示 Mysql服务正在启动 Mysql服务无法启动 服务没有报告任何错误 二、原因 由于mysql的默认端口是3306&#xff0c;因此在启动服务的时候&#xff0c;如果此端口被占用&#xff0c;就会出…...

DAY24

题目一 啊 看着挺复杂 其实很简单 第一种方法 就是纵轴是怪兽编号 横轴是能力值 看看能不能打过 逻辑很简单 看看能不能打得过 打过的就在花钱和直接打里面取小的 打不过就只能花钱 这种方法就导致 如果怪兽的能力值很大 那么我们就需要很大的空间 所以引出下一种做法 纵…...

Redis过期数据的删除策略

1 介绍 Redis 是一个kv型数据库&#xff0c;我们所有的数据都是存放在内存中的&#xff0c;但是内存是有大小限制的&#xff0c;不可能无限制的增量。 想要把不需要的数据清理掉&#xff0c;一种办法是直接删除&#xff0c;这个咱们前面章节有详细说过&#xff1b;另外一种就是…...

如何使用CSS实现一个拖拽排序效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现拖拽排序效果的CSS和JavaScript示例⭐ HTML 结构⭐ CSS 样式 (styles.css)⭐ JavaScript 代码 (script.js)⭐ 实现说明⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦…...

leetcode 118.杨辉三角

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/pascals-triangle/description/ 代码&#xff1a; class Solution { public:vector<vector<int>> generate(int numRows) {// 先开空间vector<vector<int>> v;v.…...

微服务框架之SpringBoot面试题汇总

微服务框架之SpringBoot面试题汇总 什么是Spring Boot&#xff1f; 多年来&#xff0c;随着新功能的增加&#xff0c;spring变得越来越复杂。Spring项目&#xff0c;我们必须添加构建路径或添加Maven依赖关系&#xff0c;配置应用程序服务器&#xff0c;添加spring配置。因此&…...

Promise详解

目录 一、前言&#xff1a;为什么会出现Promise?二、Promise是什么?2.1 Promise的初体验 三、使用Promise的好处?3.1 指定回调函数的方式更加灵活3.2 可以解决回调地狱问题&#xff0c;支持链式调用 四、Promise实例对象的两个属性五、resolve函数以及reject函数六、Promise…...

Oracle 查询(当天,月,年)的数据

Trunc 在oracle中&#xff0c;可利用 trunc函数 查询当天数据&#xff0c;该函数可用于截取时间或者数值&#xff0c;将该函数与 select 语句配合使用可查询时间段数据 查询当天数据 --sysdate是获取系统当前时间函数 --TRUNC函数用于截取时间或者数值&#xff0c;返回指定的…...

数据中心电力模块的发展趋势对数据中心建设的影响

在人工智能与高性能计算浪潮的推动下&#xff0c;数据中心正加速向智算中心演进。作为算力基石的供配电系统&#xff0c;其形态与功能正经历深刻重塑。电力模块作为预制模块化数据中心的核心组成部分&#xff0c;其发展演进正从建设模式、技术架构、运营管理和生态构建等多个维…...

【JavaSE全面教学】Java集合框架下Day13(2026年)

写在前面&#xff1a;这是JavaSE系列的第13篇。上一篇讲了List家族&#xff0c;今天来讲Set和Map。HashMap是面试中问得最多的集合类&#xff0c;底层原理必须搞懂。建议收藏&#xff0c;反复看。 文章目录 一、Set集合&#xff1a;不可重复1.1 Set的特点1.2 HashSet1.3 Linked…...

小程序制作平台哪个好,新手好用开发工具推荐

小程序制作平台终极对决&#xff1a;码云数智、有赞、微盟&#xff0c;谁才是你的命定之选&#xff1f;2026年的小程序赛道&#xff0c;早已不是"一招鲜吃遍天"的时代。当数字化转型成为每一个商家的必答题&#xff0c;选平台就不再是选一个工具&#xff0c;而是选一…...

CW32驱动S12SD紫外线传感器:I2C通信、数据解析与嵌入式实践

1. 项目概述与核心需求解析最近在做一个户外环境监测的小玩意儿&#xff0c;需要实时监测紫外线强度&#xff0c;选来选去&#xff0c;最终敲定了S12SD这款紫外线传感器模块。之所以选它&#xff0c;一方面是因为它直接输出数字信号&#xff0c;省去了模拟信号调理的麻烦&#…...

【免费下载】 探索地理信息的无限可能:MATLAB Mapping Toolbox 自由之旅【matlab下载】

探索地理信息的无限可能&#xff1a;MATLAB Mapping Toolbox 自由之旅 在数字化时代的浪潮中&#xff0c;地理信息系统&#xff08;GIS&#xff09;已成为连接现实世界与数字世界的桥梁。今天&#xff0c;我们特别向您推荐一个开源宝藏——MATLAB Mapping Toolbox R2019b提取版…...

如何构建拼多多数据采集系统:面向电商决策者的战略投资方案

如何构建拼多多数据采集系统&#xff1a;面向电商决策者的战略投资方案 【免费下载链接】scrapy-pinduoduo 拼多多爬虫&#xff0c;抓取拼多多热销商品信息和评论 项目地址: https://gitcode.com/gh_mirrors/sc/scrapy-pinduoduo 在拼多多平台占据中国电商市场重要份额的…...

完整指南:如何通过JiYuTrainer高效解除极域电子教室限制

完整指南&#xff1a;如何通过JiYuTrainer高效解除极域电子教室限制 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer JiYuTrainer是一款专业级的极域电子教室破解工具&#xff0c;…...

如何快速掌握JASP统计分析软件:3个高效使用技巧完整指南

如何快速掌握JASP统计分析软件&#xff1a;3个高效使用技巧完整指南 【免费下载链接】jasp-desktop JASP aims to be a complete statistical package for both Bayesian and Frequentist statistical methods, that is easy to use and familiar to users of SPSS 项目地址:…...

LeetCode热题100-从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7] 思…...

Midscene.js:3大技术突破解决跨平台UI自动化的核心痛点

Midscene.js&#xff1a;3大技术突破解决跨平台UI自动化的核心痛点 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 在当今多平台应用爆发的时代&#xff0c;你是…...