欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python實現連連看輔助之圖像識別延伸

系統 1747 0

python實現連連看輔助?C圖像識別延伸(百度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()
          

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一级做受毛片免费大片 | 色视频在线免费观看 | 欧美爱爱视频网站 | 日韩在线第二页 | 亚洲精品视频在线 | 偷偷狠狠的日日高清完整视频 | 欧美日韩在线免费观看 | 奇米影视奇米色777欧美 | 久久国产一区二区 | aaa在线 | 伊人无码高清 | 一级片黄色免费 | sese国产 | 亚洲欧美国产另类 | 亚洲国产欧美在线观看 | 一级做a爰性色毛片免费 | 久久免费精品视频在线观看 | 五月色开心婷婷丁香在线 | 天堂中文资源在线8 | 天天影院免费看电影 | 丰满少妇久久久久久久 | 2014亚洲天堂 | 影音先锋中文字幕一区 | 东京不太热在线新视频 | 日本一道在线 | 日韩欧美中文在线 | 三极片在线观看 | 97天堂| 在线视频三级 | 亚洲精品久久久久综合中文字幕 | 午夜人成 | 9999毛片免费看 | 亚洲国产精品久久网午夜 | 国产美女高清片免费观看 | 一级做a爰片性色毛片视频图片 | 一区二区日韩 | 精品国产乱码久久久久久久 | 蜜臀在线免费观看 | 久草新 | 四虎影视免费观看免费观看 | 亚洲一级在线观看 |