用 OpenCV histogram 比较图片相似度

最近一个项目需要比较两个图片的相似度,查找比较了一下觉得可以用OpenCV的histogram信息来比较两个图片的相似度。OpenCV的官网上有一些Python接口的信息,但是没有很好得整合起来。

首先需要用OpenCV来读取图片的信息:

Python: cv2.imread(filename[, flags]) → retval

然后用calcHist方法来获取图片的Histogram:

Python: cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) → hist¶

接下来用compareHist比较两张图片的Histogram:

Python: cv2.compareHist(H1, H2, method)

这边的method是不同的evaluation matrix,有如下五种可以选:

CV_COMP_CORREL Correlation
CV_COMP_CHISQR Chi-Square
CV_COMP_INTERSECT Intersection
CV_COMP_BHATTACHARYYA Bhattacharyya distance
CV_COMP_HELLINGER Synonym for CV_COMP_BHATTACHARYYA

所以接下来我们可以将整个流程完整的连接起来:

def compare_image(filepath1, filepath2):
    image1 = cv.imread(filepath1)
    hist1 = cv2.calcHist([image1], [0], None, [256], [0, 256])
    image2 = cv.imread(filepath2)
    hist2 = cv2.calcHist([image2], [0], None, [256], [0, 256])

    return cv2.compareHist(hist1, hist2, CV_COMP_CORREL)

你可能感兴趣的:(用 OpenCV histogram 比较图片相似度)