OpenCV-Python实战(15)——像素直方图均衡画

embedded/2025/1/8 1:52:55/

一、像素均值与标准差

 1.1 像素均值 cv2.mean()

python">mean_val = cv2.mean(img,mask=*)

mean_val:图像 BGR 通道的均值和透明度。

img:图像。

mask:可以选择是否添加掩膜,默认为:None。

python">import cv2
import numpy as npimg = cv2.imread('clahe.jpg') # 原图
cv2.imshow('img',img)
mean_val = cv2.mean(img)
print("mean_val",mean_val)cv2.waitKey(0)
cv2.destroyAllWindows()
python">mean_val (97.76646525877962, 97.76646525877962, 97.76646525877962, 0.0)

1.2 图像标准差cv2.meanStdDev()

python">mean,std = cv2.meanStdDev(img,mask=*)

mean:图像 BGR 通道的均值。

std:图像 BGR 通道的标准差。

img:图像。

mask:可以选择是否添加掩膜,默认为:None。

python">import cv2
import numpy as npimg = cv2.imread('clahe.jpg') # 原图
cv2.imshow('img',img)
mean,std = cv2.meanStdDev(img)
print("mean",mean)
print("std",std)
cv2.waitKey(0)
cv2.destroyAllWindows()
python">mean [[97.76646526],[97.76646526],[97.76646526]]
std [[61.26630115],[61.26630115],[61.26630115]]

 二、像素直方图 cv2.calcHist()

python">hist = cv2.calcHist(images=*,channels=*,mask=*,histSize=*,ranges=*,accumulate=*)

hist:像素值统计结果,数据结构为numpy数组格式。

images:原始图像。

channels:图像通道,一次只能检测一个通道。

mask:掩膜,默认为:None。

histSize:hist()函数的bins数量,将0~255切割成多少区间。

ranges:像素值范围,一般为0~255或[0,256]。

accumulate:是否是多幅图像累加像素值,默认为:False。

python">import cv2
import matplotlib.pyplot as pltimg = cv2.imread('Lena.png ') # 原图
cv2.imshow('img',img)color=('b','g','r')
for i,col in enumerate(color):histr = cv2.calcHist([img],[i],None,[256],[0,256])plt.plot(histr,color=col)plt.savefig('hist.png',dpi=300,bbox_inches='tight')
plt.show()
cv2.waitKey(0)
cv2.destroyAllWindows()

python">'''=======================mask--像素直方图======================='''
img = cv2.imread('Lena.png',cv2.IMREAD_GRAYSCALE)  # cv2.IMREAD_GRAYSCALE为灰度图
mask = np.zeros(img.shape[:2], np.uint8)
mask[150:400,200:370]=255
mask_img=cv2.bitwise_and(img,img,mask=mask)#图片之间与操作hist_full = cv2.calcHist([img],[0],None,[256],[0,256])
hist_mask=cv2.calcHist([img],[0],mask,[256],[0,256])
plt.subplot(221), plt.imshow(img, 'gray')
plt.subplot(222), plt.imshow(mask, 'gray')
plt.subplot(223), plt.imshow(mask_img, 'gray')
plt.subplot(224), plt.plot(hist_full), plt.plot(hist_mask)
plt.xlim([0, 256])
plt.savefig('hist_mask.png',dpi=300,bbox_inches='tight')
plt.show()

三、直方图均衡化 

3.1 全局直方图均衡化

python">img = cv2.equalizeHist(src=*)

src:为单通道图像。 

3.2 自适应 直方图均衡化

python">img = cv2.createCLAHE(clipLimit=*,tileGridSize=*)

clipLimit:均衡化颜色对比度大小。

tileGridSize:进行像素均衡化的网格大小。

python">'''=======================均衡化像素直方图======================='''
img=cv2.imread('clahe.png',0)
# 原图
plt.subplot(131),plt.plot(cv2.calcHist([img],[0],None,[256],[0,256]))
# 全局直方图均衡化
equ=cv2.equalizeHist(img)
plt.subplot(132),plt.plot(cv2.calcHist([equ],[0],None,[256],[0,256]))
#自适应直方图均衡化
#clipLimit颜色对比度的阈值, 
#titleGridSize进行像素均衡化的网格大小,即在多少网格下进行直方图的均衡化操作
clahe=cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))
res_clahe = clahe.apply(img)
plt.subplot(133),plt.plot(cv2.calcHist([res_clahe],[0],None,[256],[0,256]))res = np.hstack((img,equ,res_clahe))
cv2.imwrite('clahe_all.png',res)# plt.ylim([0, 1600])
plt.xlim([0, 256])
plt.savefig('clahe_hist.png',dpi=300,bbox_inches='tight')
plt.show()


http://www.ppmy.cn/embedded/152157.html

相关文章

R语言的计算机基础

R语言的计算机基础 引言 R语言是一种用于统计分析、数据可视化和数据挖掘的重要编程语言。它不仅拥有丰富的统计分析功能,还具备灵活的图形绘制能力,因而在数据科学领域受到广泛欢迎。本文旨在探讨R语言的基础知识,包括其历史、安装、基本语…

云架构Web端的工业MES系统设计之区分工业过程

云架构Web端的工业MES系统设计之区分工业过程 在当今数字化浪潮席卷全球的背景下,制造业作为国家经济发展的重要支柱产业,正面临着前所未有的机遇与挑战。市场需求的快速变化、客户个性化定制要求的日益提高以及全球竞争的愈发激烈,都促使制造企业必须寻求更加高效、智能的生产…

pandas基础使用

pandas基础使用 基本介绍 类似于字典形式的numpy,可以给它的不同行和不同列进行重命名。 import numpy as np import pandas as pd # 创建一个序列 s pd.Series([1,4,True,np.nan,55.0])创建date format日期矩阵 import numpy as np import pandas as pd dates…

利用 NineData 实现 PostgreSQL 到 Kafka 的高效数据同步

记录一次 PostgreSQL 到 Kafka 的数据迁移实践。前段时间,NineData 的某个客户在一个项目中需要将 PostgreSQL 的数据实时同步到 Kafka。需求明确且普遍: PostgreSQL 中的交易数据,需要实时推送到 Kafka,供下游多个系统消费&#…

【AI日记】25.01.06

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI 参加:kaggle 比赛 Forecasting Sticker Sales 读书 书名:国家为什么会失败阅读原因:2024 年诺贝尔经济学奖得主的力作,之前我已经读过他另一…

AI知识库与用户行为分析:优化用户体验的深度洞察

在当今数字化时代,用户体验(UX)已成为衡量产品成功与否的关键指标之一。AI知识库作为智能客服系统的重要组成部分,不仅为用户提供快速、准确的信息检索服务,还通过用户行为分析,为产品优化提供了深度洞察。…

C++二十三种设计模式之外观模式

C二十三种设计模式之外观模式 一、组成二、目的三、缺点四、示例代码 一、组成 子系统类:为外观类提供具体的功能。 外观类:封装一组子系统的接口。 二、目的 封装子系统一组接口,隐藏底层实现细节,简化子系统的使用。 三、缺…

运动相机拍摄的视频打不开怎么办

3-10 GoPro和大疆DJI运动相机的特点,小巧、高清、续航长、拍摄稳定,很多人会在一些重要场合用来拍摄视频,比如可以用来拿在手里拍摄快速运动中的人等等。 但是毕竟是电子产品,有时候是会出点问题的,比如意外断电、摔重…