openCV-直方图基本

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值