【OpenCV-Python】12 直方图

代码

# -*- coding: utf-8 -*-
"""
Created on Sat Dec 26 14:44:11 2020

@author: gkm0120
"""
import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('lena.jpg', 0)

# 1.直方图计算
# 使用OpenCV函数计算
hist = cv2.calcHist([img], [0], None, [256], [0, 256])  # 性能:0.022158 s
# 使用numpy函数计算
hist, bins = np.histogram(img.ravel(), 256, [0, 256])  # 性能:0.020628 s
# 使用numpy函数计算
hist = np.bincount(img.ravel(), minlength=256)  # 性能:0.003163 s

# 2.绘制直方图
plt.hist(img.ravel(), 256, [0, 256])
plt.show()
# 或使用前面计算的直方图结果
plt.plot(hist)
plt.show()

# 3.直方图均衡化(直方图均衡化就是用来改善图像的全局亮度和对比度)
equ = cv2.equalizeHist(img)
cv2.imshow('equalization', np.hstack((img, equ)))  # 并排显示
cv2.waitKey(0)
# 绘制出均衡化后的直方图
plt.hist(equ.ravel(), 256, [0, 256])
plt.show()

# 4.自适应直方图均衡化(它在每一个小区域内(默认8×8)进行直方图均衡化)
img = cv2.imread('lena.jpg', 0)
equ = cv2.equalizeHist(img)  # 应用全局直方图均衡化
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))  # 自适应均衡化,参数可选
cl1 = clahe.apply(img)
cv2.imshow('equalization', np.hstack((equ, equ, cl1)))  # 并排显示
cv2.waitKey(0)

图例

绘制直方图

lena
lena对应的直方图

直方图均衡化

原图(左)、均衡化(右)
均衡化后的直方图

自适应直方图均衡化

均衡化(左)、自适应(右)
自适应后的直方图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值