Opencv | 直方图均衡化

python 复制代码
import cv2 #opencv 读取的格式是BGR
import numpy as np
import matplotlib.pyplot as plt #Matplotlib是RGB
%matplotlib inline
python 复制代码
def cv_show(img,name):
    cv2.imshow(name,img)
    cv2.waitKey()
    cv2.destroyAllWindows()

cv2.calcHist(images,channels,mask,histSize,ranges)

  • images: 原图像图像格式为uint8 或 float32。当传入函数时应用中括号[]括来例如[img]

  • channels: 如果灰度图它的值就是[0],如果是彩色图像的传入的参数可以是[0][1][2],它们分别对应着BGR。

  • mask: 掩模图像。统整幅图像的直方图就把它为None。但是如果你想统图像某一分的直方图的你就制作一个掩模图像并使用它。

  • histSize: BIN 的数目。也应用中括号括来

  • ranges: 像素值范围常为[0256]

cat.jpg

python 复制代码
img = cv2.imread('cat.jpg',0)#0表示灰度图
hist = cv2.calcHist([img],[0],None,[256],[0,256])
hist.shape
python 复制代码
plt.hist(img.ravel(),256);
plt.show()

可视化运行结果:

直方图均衡化:

python 复制代码
equ = cv2.equalizeHist(img)
plt.hist(equ.ravel(),256)
plt.show()
python 复制代码
res = np.hstack((img,equ))
cv_show(res,'res')

运行结果:

自适应直方图均衡化:

python 复制代码
clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8))
python 复制代码
res_clahe = clahe.apply(img)
res = np.hstack((img,equ, res_clahe))
cv_show(res,'res')

运行结果:

相关推荐
熊猫钓鱼>_>几秒前
GenUI:从“文本对话”到“可操作界面”的范式转移
开发语言·人工智能·agent·sdk·vibecoding·assistant·genui
其实防守也摸鱼3 分钟前
部署本地AI大模型--ollma
人工智能·安全·ai·大模型·软件工程·本地大模型
拂晓 AI 编程3 分钟前
claude code 加上 PPT Master skill 生成可手改PPT
人工智能·powerpoint
小橙子学AI4 分钟前
Rokid AI眼镜皮肤健康检测智能体技术实践
人工智能
QQ676580085 分钟前
智慧工地物料堆积识别 工地钢筋木材图像识别 工地砖块目标检测 建筑物大理石图像识别 建筑物工地材料识别 物料堆积识别10349期
人工智能·目标检测·计算机视觉·工地物料堆积·工地钢筋木材图像识别·工地砖块目标检测·建筑物大理石图像
懂AI的老郑9 分钟前
时空智能体技术研究与应用
人工智能
Wild API10 分钟前
多模型成本治理怎么落地?从任务分层、日志统计到结构优化的一套实战思路
大数据·网络·人工智能
前端摸鱼匠14 分钟前
【AI大模型春招面试题22】层归一化(Layer Norm)与批归一化(Batch Norm)的区别?为何大模型更倾向于使用Layer Norm?
开发语言·人工智能·面试·求职招聘·batch
人工智能AI技术18 分钟前
索引基础:数据库索引结构与优化原则
人工智能
永霖光电_UVLED21 分钟前
像“黏土”一样被光塑造的材料
大数据·人工智能·汽车·制造·娱乐