从零开始的明日方舟python脚本创作(五)图像对比模块

引入的包

from PIL import Image,ImageFile#第三方库,PIL
import imagehash#自带的

全局变量

imageName=["AcceptRefresh","ActingCommander","StartGame","RoundEnd","RefuseRefresh"]
max_dif=10

imageName是事先保存的需要进行对比的子区域截图的名字。
max_dif是两张图片在相差值多少范围内算一致。

获取本地的图片

def getImageFile(index):
    global imageName
    imagePath="images/"+imageName[index]+".png"
    #print(imagePath+"图片位置")
    image=Image.open(imagePath)
    return image

事先在脚本执行的目录下创建了一个images目录,并将需要比对的子区域图片保存在了这个目录,如下图。子区域图片截图通过截屏模块截取。其实这里是可以优化一下,只截取固定一个区域在不同阶段的图片,这样会提升性能,就是通过截取的图片没有那么一目了然的看出当前处于哪个游戏阶段。
在这里插入图片描述

图像对比

#根据截屏截取的图片和本地的图片hash对比判定两张图片是否一致
def compare_image_with_hash(image_file1,image_file2,max_dif=0):
        """
        max_dif: 允许最大hash差值, 越小越精确,最小为0
        """
        ImageFile.LOAD_TRUNCATED_IMAGES = True
        hash_1 = None
        hash_2 = None
        hash_1 = imagehash.average_hash(image_file1)
        #print(hash_1)
        hash_2 = imagehash.average_hash(image_file2)
        #print(hash_2)
        dif = hash_1 - hash_2
        print("差值 %d"%(dif))
        if dif < 0:
            dif = -dif
        if dif <= max_dif:
            return True
        else:
            return False
            
def CompareImage(image,index):
   	    isEqual=compare_image_with_hash(image,getImageFile(index),max_dif)
        return isEqual

根据图片的hash值差异确定两张图片是否一致。以上,祝好!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值