国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > Python dHash算法如何使用

Python dHash算法如何使用

Python dHash

头像

小妮浅浅

2021-07-29 09:43:524700浏览 · 0收藏 · 0评论

说明

1、缩小图片:缩小到9*8,这样它就有72个像素点。

2、转换成灰度图。

3、计算差异值:dHash算法在相邻像素之间工作,因此每行9个像素之间产生8个不同的差异,总共8行,产生64个差异值。

4、获取指纹:如果左像素比右像素亮,记录为1,否则为0。

5、最后对比两张图片的指纹,获得汉明距离。

实例

# -*- coding: utf-8 -*-
# 利用python实现多种方法来实现图像识别
 
import cv2
import numpy as np
from matplotlib import pyplot as plt
 
# 最简单的以灰度直方图作为相似比较的实现
def classify_gray_hist(image1,image2,size = (256,256)):
 # 先计算直方图
 # 几个参数必须用方括号括起来
 # 这里直接用灰度图计算直方图,所以是使用第一个通道,
 # 也可以进行通道分离后,得到多个通道的直方图
 # bins 取为16
 image1 = cv2.resize(image1,size)
 image2 = cv2.resize(image2,size)
 hist1 = cv2.calcHist([image1],[0],None,[256],[0.0,255.0])
 hist2 = cv2.calcHist([image2],[0],None,[256],[0.0,255.0])
 # 可以比较下直方图
 plt.plot(range(256),hist1,'r')
 plt.plot(range(256),hist2,'b')
 plt.show()
 # 计算直方图的重合度
 degree = 0
 for i in range(len(hist1)):
 if hist1[i] != hist2[i]:
 degree = degree + (1 - abs(hist1[i]-hist2[i])/max(hist1[i],hist2[i]))
 else:
 degree = degree + 1
 degree = degree/len(hist1)
 return degree
 
# 计算单通道的直方图的相似值
def calculate(image1,image2):
 hist1 = cv2.calcHist([image1],[0],None,[256],[0.0,255.0])
 hist2 = cv2.calcHist([image2],[0],None,[256],[0.0,255.0])
 # 计算直方图的重合度
 degree = 0
 for i in range(len(hist1)):
 if hist1[i] != hist2[i]:
 degree = degree + (1 - abs(hist1[i]-hist2[i])/max(hist1[i],hist2[i]))
 else:
 degree = degree + 1
 degree = degree/len(hist1)
 return degree
 
# 通过得到每个通道的直方图来计算相似度
def classify_hist_with_split(image1,image2,size = (256,256)):
 # 将图像resize后,分离为三个通道,再计算每个通道的相似值
 image1 = cv2.resize(image1,size)
 image2 = cv2.resize(image2,size)
 sub_image1 = cv2.split(image1)
 sub_image2 = cv2.split(image2)
 sub_data = 0
 for im1,im2 in zip(sub_image1,sub_image2):
 sub_data += calculate(im1,im2)
 sub_data = sub_data/3
 return sub_data
 
# 平均哈希算法计算
def classify_aHash(image1,image2):
 image1 = cv2.resize(image1,(8,8))
 image2 = cv2.resize(image2,(8,8))
 gray1 = cv2.cvtColor(image1,cv2.COLOR_BGR2GRAY)
 gray2 = cv2.cvtColor(image2,cv2.COLOR_BGR2GRAY)
 hash1 = getHash(gray1)
 hash2 = getHash(gray2)
 return Hamming_distance(hash1,hash2)
 
def classify_pHash(image1,image2):
 image1 = cv2.resize(image1,(32,32))
 image2 = cv2.resize(image2,(32,32))
 gray1 = cv2.cvtColor(image1,cv2.COLOR_BGR2GRAY)
 gray2 = cv2.cvtColor(image2,cv2.COLOR_BGR2GRAY)
 # 将灰度图转为浮点型,再进行dct变换
 dct1 = cv2.dct(np.float32(gray1))
 dct2 = cv2.dct(np.float32(gray2))
 # 取左上角的8*8,这些代表图片的最低频率
 # 这个操作等价于c++中利用opencv实现的掩码操作
 # 在python中进行掩码操作,可以直接这样取出图像矩阵的某一部分
 dct1_roi = dct1[0:8,0:8]
 dct2_roi = dct2[0:8,0:8]
 hash1 = getHash(dct1_roi)
 hash2 = getHash(dct2_roi)
 return Hamming_distance(hash1,hash2)
 
# 输入灰度图,返回hash
def getHash(image):
 avreage = np.mean(image)
 hash = []
 for i in range(image.shape[0]):
 for j in range(image.shape[1]):
 if image[i,j] > avreage:
 hash.append(1)
 else:
 hash.append(0)
 return hash
 
 
# 计算汉明距离
def Hamming_distance(hash1,hash2):
 num = 0
 for index in range(len(hash1)):
 if hash1[index] != hash2[index]:
 num += 1
 return num
 
 
if __name__ == '__main__':
 img1 = cv2.imread('10.jpg')
 cv2.imshow('img1',img1)
 img2 = cv2.imread('11.jpg')
 cv2.imshow('img2',img2)
 degree = classify_gray_hist(img1,img2)
 #degree = classify_hist_with_split(img1,img2)
 #degree = classify_aHash(img1,img2)
 #degree = classify_pHash(img1,img2)
 print degree
 cv2.waitKey(0)

以上就是Python dHash算法的使用,希望对大家有所帮助。更多Python学习指路:python基础教程

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

爸老师电影全集免费播放在线观看| 按摩师精油按摩下面会得妇科病吗| 图书馆挺进她腿间湿润漫画| 李丽珍《红颜祸水》| 续父开续女包小芳有没有出版? | WWWWWWWW在线观看国产| 麻花星空传剧原创MV在线| 人狗大战6免费观看正版| 坤坤寒入桃子里电视剧| 叔叔别撩我24集免费观看| 男生亲你阴部代表什么心理| 《诱人的女房东3》| 日本暴力强伦轩视频| 妈妈的职业4免费观看完整版高清| 经典韩剧电影| 姐姐的闺蜜2字ID高冷霸气| 儿媳妇长太漂亮免费观看电视剧| 《魅魔之耻》1~4集免费看| 俄罗斯少女2免费观看| 校花晚上自慰忘穿内裤怎么办| 韩国电影片| 星空无限MV在线观看免费| 强妾干伦久久久久久久久| 欧美多人| 求片| 《请好好疼爱里面》免费观看| 初中小姐姐脚丫踩在男生困困 | 国产在线观看免费全集电视剧网站| 免费的行情网站WWW下载大全| 小妖精你真要我的命| 快拨出天我是你母亲歌词监控| 日韩大片PPT免费PPT| 免费的行情网站WWW网页版| 黏糊糊的你12集免费观看 | 女生的隐私曝光| 第一次挺进苏雨瑶的身体电影| 男生困困进女生困困洞视频| 吃瓜| 双男主做酱酱酿酿视频大全真人版 | 透明女仆服装开裆连体衣| 女性俱乐部LOGO