说明:该帖子是为了解决梦幻西游鼠标偏移问题
一、依赖库opencv-python和aircv
自行百度怎么安装,连接是aircv官网 https://pypi.org/project/aircv/
后面链接是关于aircv如何使用 https://github.com/NetEaseGame/aircv
二、解决思路
使用ImageGrab抓取梦幻窗口游戏图片,对比本地保存的鼠标图
相似度设置0.8以上,程序运行之后返回坐标。
# - when found
@return {'point': (203, 245), 'rectangle': [(160, 24), (161, 66), (270, 66), (269, 24)], 'confidence': 0.09}
# point: 查找到的点
# rectangle: 目标图像周围四个点的坐标
# confidence: 查找图片匹配成功的特征点 除以 总的特征点
三、代码
我把抓取的图片存在桌面命名为youxi.png,对比图片命名为shubiao.png
import aircv as ac def matchImg(imgsrc, imgobj, confidencevalue=0.5): # imgsrc=原始图像,imgobj=待查找的图片 imsrc = ac.imread('C:\\Users\\Administrator\\Desktop\\youxi.png') imobj = ac.imread('C:\\Users\\Administrator\\Desktop\\shubiao.png') match_result = ac.find_template(imsrc, imobj, 0.8) # {'confidence': 0.5435812473297119, 'rectangle': ((394, 384), (394, 416), (450, 384), (450, 416)), 'result': (422.0, 400.0)} if match_result is not None: match_result['shape'] = (imsrc.shape[1], imsrc.shape[0]) # 0为高,1为宽 print(match_result) return match_result if __name__ == '__main__': matchImg(0,0)
运行结果:
{'result': (319.5, 285.0), 'rectangle': ((306, 272), (306, 298), (333, 272), (333, 298)), 'confidence': 0.9638850688934326, 'shape': (806, 628)}
结果分析:直接拿到rectangle的第一个值就行,shape的值就是窗口大小。