基于百度图像识别api的游戏(coc)辅助工具分析
基于百度图像识别api的游戏(coc)辅助工具分析
(本代码仅供参考学习使用)
去年国庆放假,没事干,刚学了python 于是就找了这个小项目来练练手
总体来说 难度不大 内容也不多 几百行搞定 (删了部分功能 还有些功能没实现 比较懒 )操作界面也没写 (我估摸着这玩意应该没几个人用) 本人水平有限 写的比较垃圾(现在让我读我都读不懂w) 望海涵。
ok 开始看看luo
coc就不用介绍了 应该都玩过(什么? 没玩过? 自己下个玩玩) 主要是有很多的捐兵的需求 但是部落不可能24都有人在 而且不好管理(重点 圈起来)
捐兵界面主要通过发请求的方式 所以就设计到了图像转文字识别 此处用了百度的api接口(可以去百度一下这个)
图像对比函数:
进行隔时间在指定位置截图 截图后与标准捐兵标准图片对比 这个对比相关的算法是我自己写的 主要的思路就是对图片进行分块 然后将分块的rgb颜色通过相应的的公式转化为单个数值(灰度值) Gray = R0.299 + G0.587 + B*0.114 最后将取出的分块灰度值按照大小进行排列 以数量为纵坐标形成 最后将这些离散点连接起来 (正确的操作应该是用高阶多项式的插点法进行拟合 此处应该受到严重批评.jpg 太懒了 没去做这个 精度应该要高一点 此法拟合后可以分解成比离散数据点更多的对比点) 然后将标准的与截图的函数图像进行对比 当然此处是基于对比点的数量和数据数量一致的前提下 然后将对比点带入公式计算两图的重合度即可 此算法的精确度不太好 但是对于我的需求完全足够 (只需设定相识度阀值即可) 改进意见:1.灰度对比法本身的精度不算太好 我最近想到一种奇怪的方法 通过rgb的三个值进行相应的模糊运算(结果有一定的偏差) 形成一个域(反正我是这么叫的w) 最后进行函数对比时 是对域的对比 (避免两相近的数据被认为不相似) 只要是量数据的域有交点(当然 可以提高阀值 比如将此条件改为 两个域的交点需要达到一定的要求) 就认为这是两个相似的域 在进行图像对比时 相似的域记作相等就行)
2. 灰度法的优化:上边提到过插点法拟合 然后通过取较多的对比点来计算
3. 更加优秀的方法当然是用机器学习了(不会 所以不多说)
上代码:`在这里插入代码片#name:coctet.py
#by David
#v2.0 on 2018/10/10
#退出窗口: 1733,89
import jieba
from PIL import Image
from PIL import ImageGrab
from PIL import Image
from aip import AipOcr
import pyautogui
import numpy
import math
import json
import time
#语句对应字典:
juanbing_yuju_zidian={
‘随意’:‘suiyi’,
‘随便’:‘suiyi’,
‘增援’:‘suiyi’,
‘都行’:‘suiyi’,
‘野蛮人’:‘yemanren’,
‘蛮子’:‘yemanren’,
‘弓箭’:‘gongjianshou’,
‘弓箭手’:‘gongjianshou’,
‘弓’:‘gongjianshou’,
‘胖子’:‘pangzi’,
‘巨人’:‘pangzi’,
‘巨’:‘pangzi’,
‘哥布林’:‘gebulin’,
‘炸弹人’:‘zhadanren’,
‘炸弹’: ‘zhadanren’,
‘气球兵’: ‘qiqiu’,
‘气球’: ‘qiqiu’,
‘球’: ‘qiqiu’,
‘黑球’:‘qiqiu’,
‘法师’: ‘fashi’,
‘法’: ‘fashi’,
‘天使’: ‘tianshi’,
‘龙’: ‘long’,
‘皮卡’: ‘pika’,
‘龙宝’: ‘longbao’,
‘矿工’: ‘kuanggong’,
‘矿’: ‘kuanggong’,
‘雷龙’: ‘leilong’,
‘电龙’: ‘leilong’,
‘蓝龙’:‘leilong’,
‘亡灵’: ‘wanglin’,
‘野猪’: ‘yezhu’,
‘猪’: ‘yezhu’,
‘女武’: ‘nvwushen’,
‘女武神’: ‘nvwushen’,
‘石头’: ‘shitou’,
‘女巫’: ‘nvwu’,
‘狗’: ‘tiangou’,
‘天狗’: ‘tiangou’,
‘蓝胖’: ‘lanpang’,
‘巨石投手’: ‘lanpang’,
#添加的名词:
‘地面’:‘fashi’,
‘天空’:‘qiqiu’,
‘地’:‘fashi’,
‘天’:‘qiqiu’
}
juanfashu_yuju_zidian={
‘闪电’: ‘leidian’,
‘雷电’: ‘leidian’,
‘治疗’: ‘zhiliao’,
‘狂暴’: ‘kuangbao’,
‘弹跳’: ‘tantiao’,
‘跳墙’: ‘tantiao’,
‘冰冻’: ‘bingdong’,
‘镜像’: ‘jingxiang’,
‘毒’: ‘duyao’,
‘毒药’: ‘duyao’,
‘地震’: ‘dizhen’,
‘极速’: ‘jisu’,
‘骷髅’: ‘kulou’
}
#造兵字典:记录造兵坐标
zaobing_zidian={
‘suiyi’:(820,660),#默认为法师
‘yemanren’:(324,651),
‘gongjianshou’:(320,825),
‘pangzi’:(480,666),
‘gebulin’:(500,825),
‘zhadanren’:(660,650),
‘qiqiu’:(645,829),
‘fashi’:(811,648),
‘tianshi’:(817,832),
‘long’:(982,661),
‘pika’:(982,832),
‘longbao’:(1150,653),
‘kuanggong’:(1150,832),
‘leilong’:(1300,664),
#后半部分
‘wanglin’:(1100,653),
‘yezhu’:(1100,823),
‘nvwushen’:(1265,653),
‘shitou’:(1265,823),
‘nvwu’:(1430,653),
‘tiangou’:(1430,823),
‘lanpang’:(1600,653)
}
#造法术字典
zaofashu_zidian={
‘suiyi’: (500,660),#默认为狂暴
‘leidian’:(325,660),
‘zhiliao’:(325,833),
‘kuangbao’:(500,660),
‘tantiao’: (500,833),
‘bingdong’: (660,660),
‘jingxiang’: (660,833),
‘duyao’: (825,660),
‘dizhen’: (825,833),
‘jisu’: (990,660),
‘kulou’: (990,833)
}
#捐兵截图字典:
juanbing_jietu_zidian={
‘1’: (845,255,947,359),
‘2’: (958,255,1060,359),
‘3’: (1071,255,1173,359),
‘4’: (1184,255,1286,359),
‘5’: (1297,255,1399,359),
‘6’: (1410,255,1512,359),
‘7’: (1523,255,1625,359),
#第二行
‘8’: (845,402,947,505),
‘9’: (958,402,1060,505),
‘10’: (1071,402,1173,505),
‘11’: (1184,402,1286,505),
‘12’: (1297,402,1399,505),
‘13’: (1410,402,1512,505),
‘14’: (1523,402,1625,505)
}
juanfashu_jietu_zidian={
‘1’: (845,598,947,702),
‘2’: (958,598,1060,702),
‘3’: (1071,598,1173,702),
‘4’: (1184,598,1286,702),
‘5’: (1297,598,1399,702),
‘6’: (1410,598,1512,702),
‘7’: (1523,598,1625,702)
}
#图片路径字典
binglujing_zidian={
#写上名称以及对应路径 如pangzi
‘yemanren’:‘E:\初学\编程python\测试专用\coc_img\标准兵01.png’,
‘gongjianshou’:‘E:\初学\编程python\测试专用\coc_img\标准兵02.png’,
‘pangzi’:‘E:\初学\编程python\测试专用\coc_img\标准兵03.png’,
‘gebulin’:‘E:\初学\编程python\测试专用\coc_img\标准兵04.png’,
‘zhadanren’:‘E:\初学\编程python\测试专用\coc_img\标准兵05.png’,
‘qiqiu’:‘E:\初学\编程python\测试专用\coc_img\标准兵06.png’,
‘fashi’:‘E:\初学\编程python\测试专用\coc_img\标准兵07.png’,
‘tianshi’:‘E:\初学\编程python\测试专用\coc_img\标准兵08.png’,
‘long’:‘E:\初学\编程python\测试专用\coc_img\标准兵09.png’,
‘pika’:‘E:\初学\编程python\测试专用\coc_img\标准兵10.png’,
‘longbao’:‘E:\初学\编程python\测试专用\coc_img\标准兵11.png’,
‘kuanggong’:‘E:\初学\编程python\测试专用\coc_img\标准兵12.png’,
‘leilong’:‘E:\初学\编程python\测试专用\coc_img\标准兵13.png’,
#后半部分
‘wanglin’:‘E:\初学\编程python\测试专用\coc_img\标准兵14.png’,
‘yezhu’:‘E:\初学\编程python\测试专用\coc_img\标准兵15.png’,
‘nvwushen’:‘E:\初学\编程python\测试专用\coc_img\标准兵16.png’,
‘shitou’:‘E:\初学\编程python\测试专用\coc_img\标准兵17.png’,
‘nvwu’:‘E:\初学\编程python\测试专用\coc_img\标准兵18.png’,
‘tiangou’:‘E:\初学\编程python\测试专用\coc_img\标准兵019.png’,
‘lanpang’:‘E:\初学\编程python\测试专用\coc_img\标准兵20.png’
}
fashulujing_zidian={
‘leidian’:‘E:\初学\编程python\测试专用\coc_img\标准法术01.png’,
‘zhiliao’:‘E:\初学\编程python\测试专用\coc_img\标准法术02.png’,
‘kuangbao’:‘E:\初学\编程python\测试专用\coc_img\标准法术03.png’,
‘tantiao’: ‘E:\初学\编程python\测试专用\coc_img\标准法术04.png’,
‘bingdong’: ‘E:\初学\编程python\测试专用\coc_img\标准法术05.png’,
‘jingxiang’: ‘E:\初学\编程python\测试专用\coc_img\标准法术06.png’,
‘duyao’: ‘E:\初学\编程python\测试专用\coc_img\标准法术07.png’,
‘dizhen’: ‘E:\初学\编程python\测试专用\coc_img\标准法术08.png’,
‘jisu’: ‘E:\初学\编程python\测试专用\coc_img\标准法术09.png’,
‘kulou’: ‘E:\初学\编程python\测试专用\coc_img\标准法术10.png’
}
#捐兵法术位置字典:
#字符数字1到n
juanbing_position_zidian={
‘1’:(902 ,320),
‘2’:(1000,320),
‘3’:(1127,320),
‘4’:(1242,320),
‘5’:(1353,320),
‘6’:(1465,320),
‘7’:(1587,320)
}
juanfashu_position_zidian={
‘1’:(902 ,661),
‘2’:(1000,661),
‘3’:(1127,661),
‘4’:(1242,661),
‘5’:(1353,661),
‘6’:(1465,661),
‘7’:(1587,661)
}
def cheak_pic(path1,path2,Debug=False,value=1000,cheak_value=0.40):#图片对比函数 输入两个图片路径(字符串) 返回相识值0-1 包含测试输出百分之相识度
#最后一个参数表示阀值
image1=Image.open(path1).resize((value,value),Image.ANTIALIAS).convert(‘L’)
image2=Image.open(path2).resize((value,value),Image.ANTIALIAS).convert(‘L’)
image_arry1=numpy.array(image1)
image_arry2=numpy.array(image2)
dic1={}
dic2={}
result1=0
result2=False
for k in range(0,255):
dic1[k]=0
dic2[k]=0
for i in range(0,100):
for j in range(0,100):
try:
dic1[image_arry1[i][j]]+=1
dic2[image_arry2[i][j]]+=1
except:
pass
for l in range(0,255):
try:
result1+=(1-(abs(dic1[l]-dic2[l]))/max(dic1[l],dic2[l]))/255
except ZeroDivisionError:
pass
if result1>cheak_value:
result2=True
if Debug:
print(dic1)
print(dic2)
print(result1)
return (result1,result2)
def pic(pic_position,path):#输入的是一个四位元素有序集
im = ImageGrab.grab(pic_position)
im.save(path)
def aip(path,APP_ID = ‘14321825’,API_KEY = ‘eRksQhs1HwiffEkV8HXrikEa’,SECRET_KEY = 'x5Fu7cWs5SwjO5k6YlfeALsAe0pTd4fR '):
#注意设置账号密码接口 与GUI对应 增加密码记住功能
try:
# 初始化AipFace对象
aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
filePath = path
def get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()options = {'detect_direction': 'true','language_type': 'CHN_ENG',}# 调用通用文字识别接口result = aipOcr.basicGeneral(get_file_content(filePath), options)list1=result['words_result']list2=[]try:for m in list1:list2.append(m['words'])except:passprint(list2)return list2
except:print('aip Error')return []
def yuju_duizhao(list,swich,fashu=juanfashu_yuju_zidian,bing=juanbing_yuju_zidian):
#输入对照list 选择为兵或者为法术 bing or fashu 输出匹配list元素所成new_list
if swich==‘bing’:
a=[]
for i in list:
try:
a.append(bing[i])
except KeyError:
pass
return a
if swich==‘fashu’:
b=[]
for j in list:
try:
b.append(fashu[j])
except KeyError:
pass
return b
else:
raise IndexError
def mouse(mouse_postion_lift,mouse_position_right):
pyautogui.moveTo(mouse_postion_lift,mouse_position_right)
pyautogui.click()
def create_bing(bingzong=‘suiyi’,num=10,IsTuodong=False):#造兵
position_x = zaobing_zidian[bingzong][0]
position_y = zaobing_zidian[bingzong][1]
mouse(815,505)
time.sleep(0.1)
mouse(225,770)
time.sleep(0.1)
mouse(620,164)
time.sleep(0.1)
if IsTuodong:tuodongpingmu()
for i in range(0,num):mouse(position_x, position_y)time.sleep(0.1)
mouse(1660,160)
mouse(190,508)
def create_fashu(fashumingcheng=‘kuangbao’,num=1):#造法术
position_x = zaofashu_zidian[fashumingcheng][0]
position_y = zaofashu_zidian[fashumingcheng][1]
mouse(815, 505)
time.sleep(0.1)
mouse(225, 770)
time.sleep(0.1)
mouse(900,160)mouse(position_x,position_y)
if num==2:mouse(position_x,position_y)mouse(1660, 160)
mouse(190,508)#回到原位
def suijijuan():#随机捐兵捐法术 优化 设置两个接口 用于设定要捐的兵和法术
zhineng_juanbing([‘fashi’])
zhineng_juanfashu([‘kuangbao’])
def tuodongpingmu(position1_x=1317,position1_y=841,position2_x=806,position2_y=850):#造兵拖动屏幕函数
pyautogui.moveTo(position1_x,position1_y)
print(m)
pyautogui.mouseDown()
pyautogui.moveTo(position2_x,position2_y)
pyautogui.mouseUp()
time.sleep(0.2)
def cut(list):#分句输出列表
try:
a=[]
for i in list:
a+=jieba.lcut(i)
return a
except:
return []
def zhineng_juanbing(list,cheak_value=7,number=5):#第二个参数为需要检测的数量 对应GUI接口 第三个参数为默认的捐兵点击次数
if list==[]:
return []
jilu=[]#用于记录成功实现的list元素
pathlist=[]#用于记录截图路径
mouse(675, 847)#打开捐兵界面
time.sleep(0.5)
for i in range(1,cheak_value+1):#截图捐兵界面
pic(juanbing_jietu_zidian[str(i)],‘E:\初学\编程python\测试专用\coc_img\’+str(i)+‘bing.png’)
pathlist.append(‘E:\初学\编程python\测试专用\coc_img’+str(i)+‘bing.png’)
#注意对比标准图片命名: cheak_bing_i.png
#cheak_fashu_i.png
for m in list:#函数主体
s=1
n=binglujing_zidian[m]#n 为标准截图路径
for path in pathlist:
if cheak_pic(path,n)[1]:
for i in range(0,number):
mouse(juanbing_position_zidian[str(s)][0],juanbing_position_zidian[str(s)][1])
jilu.append(m)
break
s+=1
mouse(1618,216)#关闭捐兵界面
return jilu
def zhineng_juanfashu(list,cheak_value=7,number=5):#第二个参数为需要检测的数量 对应GUI接口 第三个参数为默认的捐兵点击次数
if list==[]:
return []
jilu=[]#用于记录成功实现的list元素
pathlist=[]#用于记录截图路径
mouse(675,847)#打开捐兵界面
time.sleep(0.2)
for i in range(1,cheak_value+1):#截图捐法术界面
pic(juanfashu_jietu_zidian[str(i)],‘E:\初学\编程python\测试专用\coc_img\’+str(i)+‘fashu.png’)
pathlist.append(‘E:\初学\编程python\测试专用\coc_img\’+str(i)+‘fashu.png’)
#注意对比标准图片命名: cheak_bing_i.png
#cheak_fashu_i.png
for m in list:#函数主体
s=1
n = fashulujing_zidian[m] # n 为标准截图路径
for path in pathlist:
if cheak_pic(path, n)[1]:
for i in range(0, number):
mouse(juanfashu_position_zidian[str(s)][0], juanfashu_position_zidian[str(s)][1])
jilu.append(m)
break
s += 1
mouse(1618, 216) # 关闭捐法术界面
return jilu
def zineng_creat(list1,list2): #传入两个字典 兵的名称 兵的数量 分优先级
def main_doing(second_want=5):#第一个参数设置每次循环休眠时间
time.sleep(5)
print(‘程序启动!’)
mouse(186,505) #打开聊天界面
id_jilu='None' #初始化参数设置
juanbing_tongji = 0pic_path = "E:\\初学\\编程python\\测试专用\\coc_img\\a.png"
pic_path2 = "E:\\初学\\编程python\\测试专用\\coc_img\\b.png"
pic_path3="E:\\初学\\编程python\\测试专用\\coc_img\\c.png"
pic_zhengyuanbiaozhun="E:\\初学\\编程python\\测试专用\\coc_img\\标准对照01.png"
position_1 = (242, 727, 333, 758)
position_2 = (236, 781, 586, 831)
position_3 = (590,819,760,883) #增援按键截图位置
while True:time_start=time.time()time.sleep(second_want)suiji_swich = False#开关pic(position_1, pic_path2) # 截屏idpic(position_2,pic_path) # 截屏语句pic(position_3, pic_path3)#截图增援按键mouse(1700, 166)#防休眠#主判定结构if cheak_pic(pic_path3,pic_zhengyuanbiaozhun)[1]:print('有增援按键')#cheaktry:id_jietu=aip(pic_path2)[0]except:id_jietu=id_jiluif id_jietu!=id_jilu:print('id不相同')#cheakid_jilu=id_jietuyuju_list_bing=yuju_duizhao(cut(aip(pic_path)),'bing')#yuju_list为语句的分句结果在对照后的暂存yuju_list_fashu=yuju_duizhao(cut(aip(pic_path)),'fashu')#判定是否为随机:print('输出对照后语句')print(yuju_list_bing,yuju_list_fashu)if 'suiyi' in yuju_list_bing:print('随意开关打开')suiji_swich=Trueif suiji_swich:print('为随机捐')suijijuan()time.sleep(0.2)create_bing()create_fashu()juanbing_tongji+=1print('第'+str(juanbing_tongji)+'次增援'+'/随机')else: #当不是随机情况时if yuju_list_bing==[] and yuju_list_fashu==[]:print('空语句,到下一次循环')continuejuanbing_jilu_list_bing=zhineng_juanbing(yuju_list_bing)juanfashu_jilu_list_fashu=zhineng_juanfashu(yuju_list_fashu)if juanbing_jilu_list_bing != []:create_bing(juanbing_jilu_list_bing[0]) # 只补充第一个成功捐的法术与兵种if juanfashu_jilu_list_fashu !=[]:create_fashu(juanfashu_jilu_list_fashu[0])juanbing_tongji+=1print('第' + str(juanbing_tongji) + '次增援'+'/非随机')#留一个接口用于gui显示捐兵次数time_end=time.time()print('用时'+str(time_end-time_start)+'s')
#测试单元
main_doing(3)
#以下为除智能捐兵外的其余辅助功能:
#定时关闭程序
‘’'def zinengshouqian():
#记录点击的三个位置:
time_witing=3600#设置收钱间隔 不使用函数传参 使用GUI来修改
#mouse使用设置间隔'''
‘’'def zinengdiaobei(mubiao):#输入目标杯数
mouse(818,506)#关闭聊天界面
time.sleep(2)tuodongpingmu()
time.sleep(2)
tuodongpingmu(356,502,1917,502)
zinengdiaobei(1)
‘’’
#提醒最好使用最大视角
#设置掉杯到达数量 使用GUI#调用识别函数 到检测到王 两个:标准02与标准03:'''
#原test部分:
‘’'def doing_test(word_list=word_list,juanbing_tongji=juanbing_tongji):
list_word=[{‘words’:None}]
position_1=(242,727,333,758)
position_2=(236,781,586,831)
while True:
mouse(756, 144)#到空白 防止退出
time.sleep(0.1)
mouse(1700,166)
swich=None
time.sleep(2)
pic(position_1,path=pic_path2)#截屏id
pic(position_2)#截屏语句
list_word_before=list_word
list_word=aip()
list_id=aip(pic_path2)
try:
a=[]
for i in range(0,10):
a+=cut(list_word[i][‘words’])
except:
pass
try:
for j in range(0,10):
if a[j] in word_list:
swich=True
except IndexError:
pass
try:
if list_word[0][‘words’]!=list_word_before[0][‘words’]:
if swich:
mouse(678,854)
time.sleep(1)
for m in range(0,10):
mouse(900,323)
time.sleep(0.1)
mouse(1620,218)
create_bing()
create_fashu()
juanbing_tongji+=1
except IndexError or TypeError:pass'''
‘’’
文档思路:
需要的函数:造兵函数(兵种x位置,y位置,点击次数,是否拖动)并且设置默认值 制造法术函数系(同造兵函数) 图像对比函数 捐兵与捐法术函数务必调用图像对比函数 智能对比捐兵与捐法术 任意捐兵捐法术统一函数
注意:
捐兵识别后一定要调用相应捐兵与捐法术函数 先在cut列表中查找捐兵再查找捐法术 建立截图位置字典 :造兵字典位置 法术制造位置字典 语句对应字典 其他操作字典;id与语句截图 打开关闭窗口
使用另一个py项目并且调用位置字典来生成标准截图 用这个函数对比两次截图相似度
造兵须知:调用的字典分两部分 后一部分要拖动光标后使用 后一部分为所有黑油兵种
文字中有不要等词汇 不执行操作
main函数思路:
1.等待10s
2.打开聊天界面 初始化id记录参数=None 初始化其他参数
3.开始循环
4.截图识别1 检测id与id记录参数对比 若一致则不执行余下操作 进入下一个循环
5.若id不一致 截图识别语句
6.语句分段加入一个list
7.list元素分别与作为键传入两个字典,有对应的值时输出为两个存在的列表 若兵种列表中有suiyi 则执行随意捐兵捐法术函数
8.如果兵种列表为空 跳过 不为空则传入此列表到智能捐兵函数 智能捐兵函数构造:定义一个循环 对每一个元素进行检测 打开捐兵界面进行截图 多位置截图
如果有则调用mouse函数传入此位置参数进行捐兵 此捐兵函数要有位置记录参数 如第一个位置参数为1 以此类推 并且需要一个参数对应的位置的字典(内建在
智能捐兵函数中 捐兵函数功能;内建截图位置列表 进行遍历取出 位置参数初始为1,每次进行下个循环则+1 传入pic函数 截出一张图片后 与智能捐兵函数得到的参数对应的图片进行对比(调用图片
对比函数) 若不一致 到下个循环 若一致 break 并且取得此时的位置参数 将位置参数传入字典 得到位置 将位置传入mouse并且多次点击(10次快速) 此函数
有一个返回值为成功执行鼠标点击的传入参数(如shitouren之类的字符串)不成功就返回None 建立一个记录列表把返回值记录下来
总的来说是两层循环结构:语句列表的循环 智能捐兵中的截图检查循环9.同8的方式来捐法术10.两种造兵与造法术方式(1)1)使用成功执行列表 如果列表只有一个非None值 则将这个值传入造兵函数(当然是要调用字典后) 设置造兵函数点击10次2)有多个非None值则传入这些值到造兵函数 设置点击5次(2)自己设置要捐的兵种 可以使用gui11.GUI要考虑的接口: 设置每次捐兵后要造的兵种以及数量 设置部落战或者屏蔽功能 设置定时收资源 设置脚本开关以及快捷键 设置捐兵计数器显示(在开始时使用)效率提升 设置智能对比中检索的数量接口 如可以设置一次检索3个兵种
‘’’
`
先睡觉了 明日更
基于百度图像识别api的游戏(coc)辅助工具分析相关推荐
- 利用Python, PyQt5,Selenium,百度图像识别API制作文献阅读辅助工具
开发背景 作为一名科研狗,经常需要读一些外文文献并且做笔记,有时还需要全文翻译以备后用.这时候会遇到一些问题: PDF和CAJ文件直接复制出来的东西含有大量无用的换行符,手动删除十分麻烦: 有的文献是 ...
- (亲测很实用)地理位置批量转经纬度,基于百度地图api
遇到很多地理位置需要得到其经纬度的时候,又不想或者不会写代码就很恼火, 只能一个一个去搜索去一个个复制 不管你会不会写前后端代码, 使用下面的方法就可以轻松的实现经纬度的批量查询(提示:基于百度地图a ...
- 基于百度地图API在AI Studio上的卫星地图块图像处理与分类
基于百度地图API在AI Stduio上的瓦片地图块图像处理与分类 项目介绍 本项目基于百度地图API获取了不同的瓦片地图并进行合并等处理,可用于遥感和抽象地图的地图块的图像分类.分割.检测等数据的制 ...
- 气象地图gis php代码,基于百度地图API实现自动气象站点信息显示
本栏目责任编辑:代 影数据库与信息管理 ComputerKnowledgeand Technology 电脑知识与技术 第9卷第27期 (2013年09月) 基于百度地图API实现自动气象站点信息显示 ...
- 基于百度音乐Api的Android高仿音乐播放App可在线试听下载歌词浏览
基于百度音乐Api的Android高仿音乐播放App可在线试听下载歌词浏览 首先这也是学习过程中开发的一个练手项目,基于百度音乐Api,api在网上搜的,如果想看他的实现,可以下载我的项目来参考.风格 ...
- 百度图像识别 API
首先预览下效果 feaa250077a543a39f037ae8e78a3e80~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp (640×594 ...
- 基于百度地图API实现“网易出行“
基于百度地图API实现"网易出行&Travel Planing" 作者:黑衣侠客 一.前言 这次项目主要是因为软件工程老师布置的作业,实现一个名为Travel Planin ...
- Android开发-基于百度地图API开发仿滴滴出行APP界面的实现
前 言 近年来,由于移动互联网快速的发展以及基于移动设备的APP的普及,移动互联网改变了人们的生活方式.从线上的电子支付到线下的出行,移动互联网是当今社会人们生活不可或缺的一部分,而线下出行的网约车的 ...
- 基于百度翻译API的node插件
基于百度翻译API的node插件 背景 做过国际化的项目就明白要把每处的文案翻译成不同的语言版本,如果只是一点点,自己去百度上翻译成对应语言版本,copy过来就ok了,但是如果这个项目文案特别多的话, ...
最新文章
- java 开发环境配置_Java 开发环境配置
- lisp改图元字体式样_一个更改尺寸类型的LISP程序
- 哪些因素不会限制linux服务器并发,嵌入式技术工程师 经典面试题(含答案)
- USTC English Club Note20171023
- AI大神贾扬清确认将离开Facebook,加入阿里硅谷研究院
- 解决http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
- 理论基础 —— 查找 —— 二叉排序树
- 小学计算机课的评语,小学信息技术评课稿
- Mysql的limit用法
- Remository3.52简体中文语言包
- Java Error(四)
- Win10网络图标消失,网络图标变成灰色,打开网络设置闪退等问题解决
- 4.JUC-共享模型之无锁
- 计算机毕业设计之java+ssm基于web的考研助手网站
- (云安全)拖库-洗库-撞库
- 测量图上点位平面位置\高程中误差怎么计算?
- PHP幸运抽奖系统带后台源码
- 国外硕博论文下载网址
- YUV 与 颜色空间转换
- 记一次nacos获取配置失败的坑
热门文章
- 【机器学习】先搞懂这八大基础概念,再谈机器学习入门!
- php社区果蔬网站毕业设计源码211548
- java mina 服务端_Mina客户端和服务端代码编写
- java 输出特殊字符_java原样输出特殊符号
- Java中多态的粗浅见解
- linux texlive 卸载,[linux-018] ubuntu安装texlive 2020用xelatex编译一个简单tex示
- eclipse查看properties
- 如何解决1万个并发连接,用每个客户一个线程的方法
- Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境 配置环境
- poi word转html 支持表格、图片、样式