记录一下以前看到的图像相似度算法
代码如下:部分包没用到,可以删除(当时用的python2)
# coding:utf-8
from PIL import Image
from PIL import ImageGrab
from gevent.hub import sleep
from pymouse import PyMouse
import pyHook
import threading
import os
import win32gui
import win32con
import win32api
import pythoncom
def crops(img_file):
img = Image.open(img_file)
img = img.resize((200, 200)).convert('RGB')
n = 1 # split into n x n pieces
imgs = []
unit = 200 / n
for i in range(n):
for j in range(n):
chip = img.crop((j * unit, i * unit, (j + 1) * unit, (i + 1) * unit))
imgs.append(chip.histogram())
return imgs
def compare(list1, list2):
count = 0.0
for i in range(len(list1)):
if (max(list1[i], list2[i]) != 0):
temp = 1 - (abs(list1[i] - list2[i]) + 0.0) / max(list1[i], list2[i])
else:
temp = 1
count = count + temp
count = count / len(list1)
return count
def compares(images1, images2):
count = 0
for i in range(len(images1)):
count = count + compare(images1[i], images2[i])
count = count / len(images1)
return count
def get_files():
filelist = []
for root, dirs, files in os.walk(path + "imgs"):
for fn in files:
filelist.append(path + "imgs\\" + fn)
return filelist