计算两幅图像的相似度大小(可以设置阈值进行比对)

from PIL import Image
import time

def pixel_equal(image1, image2, x, y):
    """
    判断两个像素是否相同
    :param image1: 图片1
    :param image2: 图片2
    :param x: 位置x
    :param y: 位置y
    :return: 像素是否相同
    """
    # 取两个图片像素点
    piex1 = image1.load()[x, y]
    piex2 = image2.load()[x, y]
    threshold = 10
    # 比较每个像素点的RGB值是否在阈值范围内,若两张图片的RGB值都在某一阈值内,则我们认为它的像素点是一样的
    if abs(piex1[0] - piex2[0]) < threshold and abs(piex1[1]- piex2[1]) < threshold and abs(piex1[2] - piex2[2]) < threshold:
        return True
    else:
        return False

def compare(image1, image2):
    """
    进行比较
    :param image1:图片1
    :param image2: 图片2
    :return:
    """
    left = 0		# 坐标起始位置
    right_num = 0	# 记录相同像素点个数
    false_num = 0	# 记录不同像素点个数
    all_num = 0		# 记录所有像素点个数
    for i in range(left, image1.size[0]):
        for j in range(image1.size[1]):
            if pixel_equal(image1, image2, i, j):
                right_num += 1
            else:
                false_num += 1
            all_num += 1
    same_rate = right_num / all_num		# 相同像素点比例
    nosame_rate = false_num / all_num	# 不同像素点比例
    print("same_rate: ", same_rate)
    print("nosame_rate: ", nosame_rate)



if __name__ == "__main__":
    t1 = time.time()
    image1 = Image.open("./out0321_320.jpg")
    image2 = Image.open("./out0321_640.jpg")
    compare(image1, image2)
    t2 = time.time()
    print("t=", t2-t1)

你可能感兴趣的:(深度学习,python)