我是靠谱客的博主 精明小蚂蚁,最近开发中收集的这篇文章主要介绍Python通过像素点比较两张图片是否相似,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 = 80
# 坐标起始位置
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("./pic/pic1.png")
image2 = Image.open("./pic/pic2.png")
compare(image1, image2)
t2 = time.time()
print("t=", t2-t1)

最后

以上就是精明小蚂蚁为你收集整理的Python通过像素点比较两张图片是否相似的全部内容,希望文章能够帮你解决Python通过像素点比较两张图片是否相似所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部