重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
OpenCV如何利用python实现图像的直方图均衡化?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
成都创新互联是一家专注于网站设计制作、成都网站设计与策划设计,射阳网站建设哪家好?成都创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:射阳等地区。射阳做网站价格咨询:135182197921.直方图
直方图: (1) 图像中不同像素等级出现的次数 (2) 图像中具有不同等级的像素关于总像素数目的比值。
我们使用cv2.calcHist
方法得到直方图
cv2.calcHist(images, channels, mask, histSize, ranges):
-img: 图像
-channels: 选取图像的哪个通道
-histSize: 直方图大小
-ranges: 直方图范围
cv2.minMaxLoc:
返回直方图的大最小值,以及他们的索引
import cv2 import numpy as np def ImageHist(image, type): color = (255, 255,255) windowName = 'Gray' if type == 1: #判断通道颜色类型 B-G-R color = (255, 0, 0) windowName = 'B hist' elif type == 2: color = (0,255,0) windowName = 'G hist' else: color = (0,0,255) # 得到直方图 hist = cv2.calcHist([image],[0],None,[256],[0,255]) # 得到大值和最小值 minV,maxV,minL,maxL = cv2.minMaxLoc(hist) histImg = np.zeros([256,256,3],np.uint8) #直方图归一化 for h in range(256): interNormal = int(hist[h] / maxV * 256) cv2.line(histImg, (h, 256), (h, 256 - interNormal), color) cv2.imshow(windowName, histImg) return histImg img = cv2.imread('img.jpg', 1) channels = cv2.split(img) # R-G-B for i in range(3): ImageHist(channels[i], 1 + i) cv2.waitKey(0)