天天看点

(Python+OpenCV)直方图均衡化

图像的空域处理是一种非常重要的图像处理技术,这类方法直接以图像的像素操作为基础,主要分为灰度变换和空域滤波两大类。

直方图均衡化(Histogram equalization)是一种常用的灰度变换方法。

Part1:灰度图均衡

#灰度图均衡


import sys
import cv2 as cv
import numpy as np


print('Python的版本为:Python',sys.version_info.major)
print('OpenCV的版本为:',cv.__version__)


#图片路径
#(应避免有中文)
image_path=r'C:\Users\94456\Desktop\test2020_09_03\picture\cat.jpg'


#读取图片
#类型:numpy.ndarray
image=cv.imread(image_path)
# #显示原图
# cv.imshow('cat',image)


#将彩色图像转换为灰度图
image_gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)


#直方图均衡化
image_equalize=cv.equalizeHist(image_gray)


#图像拼接
image_compare=np.hstack((image_gray,image_equalize))
#拼接后的图像显示
#WINDOW_AUTOSIZE:窗口大小自适应图片大小
#WINDOW_NORMAL:可以手动拉伸窗口
cv.namedWindow('cat',cv.WINDOW_NORMAL)
cv.resizeWindow('cat',400,200)
cv.imshow('cat',image_compare)
cv.waitKey(0)


           

结果图:

(Python+OpenCV)直方图均衡化

Part2:彩色图均衡

#彩色图均衡


import sys
import numpy as np
import cv2 as cv


print('Python的版本为:Python',sys.version_info.major)
print('OpenCV的版本为:',cv.__version__)


#图片路径
#(应避免有中文)
image_path=r'C:\Users\94456\Desktop\test2020_09_03\picture\cat.jpg'


#读取图片
#类型:numpy.ndarray
image=cv.imread(image_path)


#将图片由BGR转为YUV
image_equalize=cv.cvtColor(image,cv.COLOR_BGR2YUV)
#通道分离
channels=cv.split(image_equalize)
#对图像的灰阶通道进行直方图均衡化
channels[0]=cv.equalizeHist(channels[0])
#三通道合成彩色图片
image_equalize=cv.merge(channels)
#将图片由YUV转为BGR
image_equalize=cv.cvtColor(image_equalize,cv.COLOR_YUV2BGR)


#图像拼接
image_compare=np.hstack((image,image_equalize))
#拼接后的图像显示
#WINDOW_AUTOSIZE:窗口大小自适应图片大小
#WINDOW_NORMAL:可以手动拉伸窗口
cv.namedWindow('cat',cv.WINDOW_NORMAL)
cv.resizeWindow('cat',400,200)
cv.imshow('cat',image_compare)
cv.waitKey(0)


           

结果图:

(Python+OpenCV)直方图均衡化

继续阅读