主要代码:
import aircv as ac
# 匹配图片,返回包含位置的数据字典
def matchImg(imgsrc, imgobj, confidencevalue=0.5): # imgsrc=原始图像,imgobj=待查找的图片
imsrc = ac.imread(imgsrc)
imobj = ac.imread(imgobj)
match_result = ac.find_template(imsrc, imobj,confidencevalue) # {'confidence': 0.5435812473297119, 'rectangle': ((394, 384), (394, 416), (450, 384), (450, 416)), 'result': (422.0, 400.0)}
return match_result
安装库
pip install opencv-python
pip install aircv
钢琴块2案例代码:
注意:以管理员身份启动
import aircv as ac
from pymouse import PyMouse
from PIL import ImageGrab
import time
'''
1.截图
2.根据小图片 识别它在大图片中的位置
3.鼠标移到点击
'''
# 匹配图片,返回包含位置的数据字典 的列表 a=[{},{},{}]
def matchImg(imgsrc, imgobj, confidencevalue=0.9): # imgsrc=原始图像,imgobj=待查找的图片
imsrc = ac.imread(imgsrc)
imobj = ac.imread(imgobj)
match_result = ac.find_all_template(imsrc, imobj,confidencevalue) # {'confidence': 0.5435812473297119, 'rectangle': ((394, 384), (394, 416), (450, 384), (450, 416)), 'result': (422.0, 400.0)}
return match_result
m = PyMouse()#获取鼠标
#1.截图
bbox = (0, 50, 555, 880)
im = ImageGrab.grab(bbox)
im.save('yx.jpg')
time.sleep(5)
# ===========点击开始===========
xyt = matchImg('yx.jpg', '003.jpg')[0] # a=[{}]返回字典的数据的列表,获取第0项{}
if xyt != None: #使用判断也不要使用异常,异常影响效率。
x = xyt['result'][0]#result对应的值,对应捕捉图像的中心位置
y = xyt['result'][1]
# 3.点击
m.click(int(x), int(y)+50) # 这里的数据类型必须是整数,否则报错
while True:
#for i in range(1500):
#1.截图
bbox = (0, 50,555, 880)
im = ImageGrab.grab(bbox)
im.save('yx.jpg')
#===========点击黑色方块===========
xyts = matchImg('yx.jpg', '009.jpg') # 返回字典的数据 的列表
for xyt in xyts:
if xyt != None: #使用判断也不要使用异常,异常影响效率。
x = xyt['result'][0]#result对应的值,对应捕捉图像的中心位置
y = xyt['result'][1]
# 3.点击
if x < 555 and y>100:#防止点到窗口上边缘
m.click(int(x), int(y)+50) # 这里的数据类型必须是整数,否则报错
009.jpg
003.jpg
使用安卓模拟器(效果图如下)
注意:
每张图片的匹配度有所不一样测试符合识别目标图片的匹配度。通常0.95可达到完全匹配。
import aircv as ac
from pymouse import PyMouse
from PIL import ImageGrab
import time
'''
1.截图
2.根据小图片 识别它在大图片中的位置
3.鼠标移到点击
'''
# 匹配图片,返回包含位置的数据字典 的列表 a=[{},{},{}]
def matchImg(imgsrc, imgobj, confidencevalue=0.95): # imgsrc=原始图像,imgobj=待查找的图片
imsrc = ac.imread(imgsrc)
imobj = ac.imread(imgobj)
match_result = ac.find_all_template(imsrc, imobj,confidencevalue) # {'confidence': 0.5435812473297119, 'rectangle': ((394, 384), (394, 416), (450, 384), (450, 416)), 'result': (422.0, 400.0)}
return match_result
m = PyMouse()#获取鼠标
#1.截图
bbox = ()
im = ImageGrab.grab(bbox)
im.save('yx.jpg')
time.sleep(3)
# ===========点击开始===========
xyt = matchImg('yx.jpg', '1001.jpg',0.95)#[0] # a=[{}]返回字典的数据的列表,获取第0项{}
for i in xyt:
print(i)