import cv2 #导入opencv库
import numpy
#直方图均衡化,对比度改变
def equalization_rgb(imgtu):
#只能使用灰度图片
imgx=cv2.cvtColor(imgtu,cv2.COLOR_RGB2GRAY)#转换为灰度
#默认参数,自接使用
#imgtu=cv2.equalizeHist(imgx)#均衡化
#可修改参数clipLimit的值得到不一样效果
chanlx=cv2.createCLAHE(clipLimit=30.0,tileGridSize=(8,8))
imgtu=chanlx.apply(imgx)
cv2.imshow("equalization",imgtu)#显示
#直方图比较,图片相似度比较,遍历像素点,速度慢慢
def create_compara(imgtu):
h,w,t=imgtu.shape
rgbx=numpy.zeros([16*16*16,1],numpy.float32)
bsize=256/16
for row in range(h):
for col in range(w):
b=imgtu[row,col,0]
g=imgtu[row,col,1]
r=imgtu[row,col,2]
index=numpy.int(b/bsize)*16*16+numpy.int(g/bsize)*16+numpy.int(r/bsize)
rgbx[numpy.int(index),0]=rgbx[numpy.int(index),0]+1
return rgbx
def compare_ing():
img1=cv2.imread("imgx/xxG.png")
img2=cv2.imread("imgx/xxR.png")
hist1=create_compara(img1)
hist2=create_compara(img2)
cv2.imshow("img1111",img1)
cv2.imshow("img2222",img2)
va1=cv2.compareHist(hist1,hist2,cv2.HISTCMP_BHATTACHARYYA)
va2=cv2.compareHist(hist1,hist2,cv2.HISTCMP_CORREL)
va3=cv2.compareHist(hist1,hist2,cv2.HISTCMP_CHISQR)
print("巴氏距离,越小越相似(0,1):",va1)
print("相关性,越接近于1,越相似:",va2)
print("卡方,越小越相似:",va3)
#读取一张图片,地址不能带中文
imgviewx=cv2.imread("imgx/zcy.jpg")
#创建一个窗口,中文显示会出乱码
cv2.namedWindow("东小东标题")
#显示图片,参数:(窗口标识字符串,imread读入的图像)
cv2.imshow("东小东标题",imgviewx)
#------------------
#equalization_rgb(imgviewx)#直方图均衡化,提高对比度
compare_ing()#直方图比较,图片相似度
#-------------------
#窗口等待任意键盘按键输入,0为一直等待,其他数字为毫秒数
cv2.waitKey(0)
#销毁窗口,退出程序
cv2.destroyAllWindows()
openCV-直方图基本
最新推荐文章于 2021-12-18 16:11:13 发布