1条回答 默认 最新
- @wojiubu@ 2018-11-30 01:57关注
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt画直方图
def zhifangtu(image):
a = [0] * 256 # 创建储存像素数的一维数组
w = image.shape[0] # 得到图像宽高
h = image.shape[1]
# 计算灰度像素数
for i in range(w):
for j in range(h):
gray = image[i, j]
a[gray] += 1
# 以灰度为x轴像素数为y轴画直方图
y = a
x = [i for i in range(256)]
plt.figure()
plt.title("zhifangtu")
plt.xlabel("Bins")
plt.ylabel("Pixels")
plt.plot(x, y)
plt.xlim([0, 256])
return a # 返回灰度像素数将图像均衡化
def junhenghua(a, image): # 入口参数:灰度像素数和图片
b = [0] * 256 # 储存个灰度像素占比数据
c = [0] * 256 # 储存累计分布数据
w = image.shape[0]
h = image.shape[1]
mn = w * h * 1.0
img = np.zeros([w, h], np.uint8) # 创建空数组储存均衡化后数据# 计算灰度分布密度 for i in range(len(a)): b[i] = a[i] / mn # 计算累计直方图数据 for i in range(len(c)): if i == 1: c[i] = b[i] else: c[i] = c[i - 1] + b[i] a[i] = int(255 * c[i]) # 对各灰度值进行均衡化映射 for i in range(w): for j in range(h): img[i, j] = a[image[i, j]] return img # 返回均衡化后图像
image = cv.imread("C:/Users/zhengyingxin.NMSED/Desktop/1543115263_305536.jpg", 0) # 读取灰度图像
cv.imshow("base", image)
a = zhifangtu(image) # 画原始图像直方图并得到灰度像素数
b = junhenghua(a, image) # 将图像均衡化
cv.imshow('junhenghua', b)
zhifangtu(b) # 画均衡化后图像直方图
plt.show()解决评论 打赏 举报无用 1
悬赏问题
- ¥30 这是哪个作者做的宝宝起名网站
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!