最近搞了一个SX搜索图片相似度的系统,非常的简单。主要原理是这样的
1.用Phash算法计算出每二个图片的Phash值,存在CSV中
2.用Spark读入CSV,并且计算出要搜索的图片的Hash值
3.将这个值广播出去,然后求一个hamming距离的最大值
代码如下,在我的gayhub中也有limn2o4’s github
import cv2
import numpy as np
import phash
import os
import csv
def get_pHash(img):
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img_resize = cv2.resize(img_gray,(64,64),interpolation=cv2.INTER_CUBIC)
h,w = img_resize.shape[:2]
img_float = np.zeros((h,w),np.float32)
img_float[:h,:w] = img_resize
img_dct = cv2.dct(cv2.dct(img_float)