主要内容

5-2 彩色图片直方图
1import cv2 2import numpy as np 3def ImageHist(image,type): 4 color = (255,255,255) 5 windowName = 'Gray' 6 if type == 31: 7 color = (255,0,0) 8 windowName = 'B Hist' 9 elif type == 32: 10 color = (0,255,0) 11 windowName = 'G Hist' 12 elif type == 33: 13 color = (0,0,255) 14 windowName = 'R Hist' 15 # 1 image 2 [0] 3 mask None 4 256 5 0-255 16 hist = cv2.calcHist([image],[0],None,[256],[0.0,255.0]) 17 minV,maxV,minL,maxL = cv2.minMaxLoc(hist) 18 print(maxV) 19 histImg = np.zeros([256,256,3],np.uint8) 20 for h in range(256): 21 intenNormal = int(hist[h]*256/maxV) 22 cv2.line(histImg,(h,256),(h,256-intenNormal),color) 23 cv2.imshow(windowName,histImg) 24 return histImg 25 26img = cv2.imread('image0.jpg',1) 27channels = cv2.split(img)# RGB - R G B 28for i in range(0,3): 29 ImageHist(channels[i],31+i) 30cv2.waitKey(0) 31 32 33imGray = cv2.imread('image0.jpg', 0) 34ImageHist(imGray, 0) 35cv2.waitKey(0) 36 37#灰度 直方图均衡化 38import cv2 39import numpy as np 40img = cv2.imread('image0.jpg',1) 41gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 42cv2.imshow('src',gray) 43dst = cv2.equalizeHist(gray) 44cv2.imshow('dst',dst) 45cv2.waitKey(0) 46 47#彩色 直方图均衡化 48import cv2 49import numpy as np 50img = cv2.imread('image0.jpg',1) 51cv2.imshow('src',img) 52(b,g,r) = cv2.split(img)#通道分解 53bH = cv2.equalizeHist(b) 54gH = cv2.equalizeHist(g) 55rH = cv2.equalizeHist(r) 56result = cv2.merge((bH,gH,rH))# 通道合成 57cv2.imshow('dst',result) 58cv2.waitKey(0) 59 60#YUV 直方图均衡化 61import cv2 62import numpy as np 63img = cv2.imread('image0.jpg',1) 64imgYUV = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb) 65cv2.imshow('src',img) 66channelYUV = cv2.split(imgYUV) 67channelYUV[0] = cv2.equalizeHist(channelYUV[0]) 68channels = cv2.merge(channelYUV) 69result = cv2.cvtColor(channels,cv2.COLOR_YCrCb2BGR) 70cv2.imshow('dst',result) 71cv2.waitKey(0)