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')

运行结果:

相关推荐
爱写代码的小朋友4 分钟前
生成式人工智能(AIGC)在中小学生探究式学习中的应用边界与伦理思考
人工智能·学习·aigc
xcbrand9 分钟前
地产建筑品牌策划公司哪家强
大数据·人工智能·python
刘~浪地球10 分钟前
当AI开始“授课“:教育AI是解放老师还是取代老师?
人工智能
chaofan98011 分钟前
Claude 4.7 Opus 深度测评:智能体编码跑分暴涨 10%,开发者要失业了?
人工智能·自动化·api
Hhang19 分钟前
从 ERP 系统出发,我是如何设计一套 LLM 多 Agent 系统的(二)
前端·人工智能·agent
Java后端的Ai之路22 分钟前
还在手写 Agent 代码?封装一个 SDK 让你从“码农“升级“包工头“
人工智能·langchain·ai编程·vibe coding·agent sdk
redreamSo22 分钟前
Claude Code 最佳实践:从「能用」到「用得好」的 15 个关键技巧
人工智能·claude
Merkyor26 分钟前
我花一下午修了 7 个 bug:一个 Electron AI Agent 发版前夜的 debug 长征
人工智能
石榴树下的七彩鱼26 分钟前
智能抠图 API 接入实战:3 行代码实现图片自动去背景(Python / Java / PHP / JS)
java·图像处理·人工智能·python·php·api·抠图
星哥说事28 分钟前
开源项目OpenClaw:多AI模型统一调用的技术学习与实践
人工智能·学习