一、图片相似比较
本文介绍的几种实现方式:
- 暴力方式:1.按像素比较,n越小相似度越高;2.矩阵相减,用来判断两个图是不是完全一样;hashlib.md5判断两个图是否完全一样
- 哈希算法:1.感知哈希算法;2.均值哈希算法;3.差值哈希算法
- 灰度直方图:1.单通道直方图;2. 三通道直方图
二、暴力方式
1. 按像素比较
# -*- coding: utf-8 -*-# !/usr/bin/pythonimport cv2n = 0img1 = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)img2 = cv2.imread('test.png', cv2.IMREAD_GRAYSCALE)height, width = img1.shapefor line in range(height): for pixel in range(width): if img1[line][pixel] != img2[line][pixel]: n = n + 1print(n)
2. OpenCV2 矩阵相减
- 两个图片完全一样时返回值为true
- 如果把一个图片转了格式,则结果可能不一样,因为转格式的过程中可能会进行算法处理
3. 通过hashlib.md5判断图片是否完全一样
import hashliba = open("test.png