直方图均衡化
很多博客都是讲的理论以及opencv中的函数的使用,并没有具体的阐述函数的基本写法,小编给大家带来具体的函数实现方法
import cv2 as cv
G=[0 for k in range(256)]#用于存取相应灰度级的个数
balance=[0 for k in range(256)]#用于存取均衡化相应灰度级的变化
src=cv.imread("H:\\tupian\\timg.bmp",0)
size=src.shape
cv.imshow("42",src)
for i in range(size[0]):
for j in range(size[1]):
G[src[i,j]]=G[src[i,j]]+1#读取相应灰度级的个数
for k in range(256):
if k>1:
balance[k]=balance[k-1]+((255*G[k])/(size[0]*size[1]))#应用灰度级均衡化公式
else:
balance[k]=(255*G[k])/(size[0]*size[1])
for i in range(size[0]):
for j in range(size[1]):
k=0
for k in range(256):
if src[i,j]==k:
src[i,j]=balance[k]#对相应灰度级进行均衡化之后的赋值
break
cv.imshow("43",src)
cv.imwrite("H:\\tupian\\changetimg.bmp",src)#将获取的图片进行保存
cv.waitKey(0)
效果图对比