圆月山庄资源网 Design By www.vgjia.com
python实现连连看辅助–图像识别延伸(百度AI),供大家参考,具体内容如下
百度AI平台提供图片相似检索API接口,并有详细的API文档说明,可以更好的实现图片识别。
from aip import AipImageSearch """ 你的 APPID AK SK """ APP_ID = '***' API_KEY = '***' SECRET_KEY = '***' client = AipImageSearch(APP_ID, API_KEY, SECRET_KEY) with open("{}-{}.jpg".format(1, 1), "rb") as f: im = f.read() # im = self.image_list[row][col] # 将图片与百度云自建相似图库中的图片对比相似度 res = client.similarSearch(im) for r in res["result"]: if r["score"] > 0.9: print(r["brief"])
百度AI平台提供非常多的API接口,值得研究。
代码
import win32gui import time from PIL import ImageGrab , Image import numpy as np from pymouse import PyMouse from aip import AipImageSearch class GameAuxiliaries(object): def __init__(self): self.wdname = r'宠物连连看经典版2,宠物连连看经典版2小游戏,4399小游戏 www.4399.com - Google Chrome' # self.wdname = r'main.swf - PotPlayer' self.image_list = {} self.m = PyMouse() self.APP_ID = '15633871' self.API_KEY = 'LNMuXHmULcZM0PRKX8ZT4OnB' self.SECRET_KEY = 'IwvyYxeDLIR5XvEmnX3ENWoVzMITkdBL' self.client = AipImageSearch(self.APP_ID, self.API_KEY, self.SECRET_KEY) def find_game_wd(self,wdname): # 取得窗口句柄 hdwd = win32gui.FindWindow(0,wdname) # 设置为最前显示 win32gui.SetForegroundWindow(hdwd) time.sleep(1) def get_img(self): image = ImageGrab.grab((417, 289, 884, 600)) # image = ImageGrab.grab((417, 257, 885, 569)) image.save('1.jpg','JPEG') for x in range(1,9): self.image_list[x] = {} for y in range(1,13): top = (x - 1) * 38 + (x-2) left =(y - 1) * 38 +(y-2) right = y * 38 + (y-1) bottom = x * 38 +(x -1) if top < 0: top = 0 if left < 0 : left = 0 im_temp = image.crop((left,top,right,bottom)) im = im_temp.crop((1,1,37,37)) im.save('{}-{}.jpg'.format(x,y)) self.image_list[x][y]=im def compare_img_baiduapi(self,im): '''将图片与百度云自建相似图库中的图片对比相似度''' pass # 判断两个图片是否相同。汉明距离,平均哈希 def compare_img(self,im1,im2): img1 = im1.resize((20, 20), Image.ANTIALIAS).convert('L') img2 = im2.resize((20, 20), Image.ANTIALIAS).convert('L') pi1 = list(img1.getdata()) pi2 = list(img2.getdata()) avg1 = sum(pi1) / len(pi1) avg2 = sum(pi2) / len(pi2) hash1 = "".join(map(lambda p: "1" if p > avg1 else "0", pi1)) hash2 = "".join(map(lambda p: "1" if p > avg2 else "0", pi2)) match = 0 for i in range(len(hash1)): if hash1[i] != hash2[i]: match += 1 # match = sum(map(operator.ne, hash1, hash2)) # match 值越小,相似度越高 return match # 将图片矩阵转换成数字矩阵 def create_array(self): array = np.zeros((10,14),dtype=np.int32) img_type_list = [] for row in range(1,len(self.image_list)+1): for col in range(1,len(self.image_list[1])+1): # im = Image.open('{}-{}.jpg'.format(row,col)) with open("{}-{}.jpg".format(row,col), "rb") as f: im = f.read() # im = self.image_list[row][col] # 将图片与百度云自建相似图库中的图片对比相似度 res = self.client.similarSearch(im) while len(res) == 2: res = self.client.similarSearch(im) print(res) print(row, col) time.sleep(0.2) print(row,col) for r in res["result"]: if r["score"] > 0.9: array[row][col]=r["brief"] return array def row_zero(self,x1,y1,x2,y2,array): '''相同的图片中间图标全为空''' if x1 == x2: min_y = min(y1,y2) max_y = max(y1,y2) if max_y - min_y == 1: return True for y in range(min_y+1,max_y): if array[x1][y] != 0 : return False return True else: return False def col_zero(self,x1,y1,x2,y2,array): '''相同的图片同列''' if y1 == y2: min_x = min(x1,x2) max_x = max(x1,x2) if max_x - min_x == 1: return True for x in range(min_x+1,max_x): if array[x][y1] != 0 : return False return True else: return False def two_line(self,x1,y1,x2,y2,array): '''两条线相连,转弯一次''' for row in range(1,9): for col in range(1,13): if row == x1 and col == y2 and array[row][col]==0 and self.row_zero(x1,y1,row,col,array) and self.col_zero(x2,y2,row,col,array): return True if row == x2 and col == y1 and array[row][col]==0 and self.row_zero(x2,y2,row,col,array) and self.col_zero(x1,y1,row,col,array): return True return False def three_line(self,x1,y1,x2,y2,array): '''三条线相连,转弯两次''' for row1 in range(10): for col1 in range(14): for row2 in range(10): for col2 in range(14): if array[row1][col1] == array[row2][col2] == 0 and self.row_zero(x1,y1,row1,col1,array) and self.row_zero(x2,y2,row2,col2,array) and self.col_zero(row1,col1,row2,col2,array): return True if array[row1][col1] == array[row2][col2] == 0 and self.col_zero(x1,y1,row1,col1,array) and self.col_zero(x2,y2,row2,col2,array) and self.row_zero(row1,col1,row2,col2,array): return True if array[row1][col1] == array[row2][col2] == 0 and self.row_zero(x2,y2,row1,col1,array) and self.row_zero(x1,y1,row2,col2,array) and self.col_zero(row1,col1,row2,col2,array): return True if array[row1][col1] == array[row2][col2] == 0 and self.col_zero(x2,y2,row1,col1,array) and self.col_zero(x1,y1,row2,col2,array) and self.row_zero(row1,col1,row2,col2,array): return True return False def mouse_click(self,x,y): top = (x - 1) * 38 + (x - 2) left = (y - 1) * 38 + (y - 2) right = y * 38 + (y - 1) bottom = x * 38 + (x - 1) if top < 0: top = 0 if left < 0: left = 0 self.m.press(int(417+(left+right)/2) ,int(289+(top+bottom)/2) ) def find_same_img(self,array): for x1 in range(1,9): for y1 in range(1,13): if array[x1][y1] == 0: continue for x2 in range(1,9): for y2 in range(1,13): if x1==x2 and y1 == y2: continue if array[x2][y2] == 0 : continue if array[x1][y1] != array[x2][y2] : continue if array[x1][y1] ==array[x2][y2] and (self.row_zero(x1,y1,x2,y2,array) or self.col_zero(x1,y1,x2,y2,array) or self.two_line(x1,y1,x2,y2,array) or self.three_line(x1,y1,x2,y2,array)): print("可消除!x{}y{} 和 x{}y{}".format(x1,y1,x2,y2)) self.mouse_click(x1,y1) time.sleep(0.1) self.mouse_click(x2,y2) time.sleep(0.1) array[x1][y1]=array[x2][y2]=0 def run(self): #找到游戏运行窗口 self.find_game_wd(self.wdname) # 截图,切割成小图标 self.get_img() print("切割完成") # 将图片矩阵转换成数字矩阵 array = self.create_array() print(array) # 遍历矩阵,找到可消除项,点击消除 for i in range(10): self.find_same_img(array) print(array) if __name__ == '__main__': ga = GameAuxiliaries() ga.run()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
python,连连看,图像识别
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月05日
2024年11月05日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]