Python刷江南百景图水井

思路

用adb截图传到电脑,用cv2识图,找到坐标,再用adb模拟点击。

代码:

从手机截图并传回电脑 命名 PictureName

def pull_screenshot(PictureName):
    #filename = datetime.datetime.now().strftime("%H%M%S") + '{}.png'.format(PictureName)
    #os.system('mv {}.png {}'.format(PictureName,filename))
    os.remove("{}.png".format(PictureName))
    os.system('adb shell screencap -p /sdcard/{}.png'.format(PictureName))
    os.system('adb pull /sdcard/{}.png ./{}.png'.format(PictureName,PictureName))
    return './{}.png'.format(PictureName)

cv2找图:

def search_returnPoint(img,template_name):
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    template_ = cv2.cvtColor(template[template_name], cv2.COLOR_BGR2GRAY)
    template_size = template[template_name+"_size"]
    result = cv2.matchTemplate(img_gray, template_,cv2.TM_CCOEFF_NORMED)
    #cv2.normalize(result, result, 0, 1, cv2.NORM_MINMAX, -1)
    threshold = 0.7
    # res大于70%
    loc = np.where(result >= threshold)
    # 使用灰度图像中的坐标对原始RGB图像进行标记
    point = ()
    for pt in zip(*loc[::-1]):
        cv2.rectangle(img, pt, (pt[0] + template_size[1], pt[1] + + template_size[0]), (7, 249, 151), 2)
        point = pt
    if point==():
        return None,None,None
    return img,point[0]+ template_size[1] /2,point[1]

找图2,用来找水井位置的,水井位置摆放位置不同会影响找的位置,还有可能被UI遮挡。

#找图 返回前10个可能匹配的点列表
def search_returnPointList(img,template_name):
    template_ = template[template_name]
    template_size = template[template_name+"_size"]
    result = cv2.matchTemplate(img, template_, cv2.TM_SQDIFF)
    result2 = np.reshape(result, result.shape[0] * result.shape[1])
    sort = np.argsort(result2)
    pointList_ =[]
    for i in range(0,10):
        print(i)
        (y_, x_) = np.unravel_index(sort[i], result.shape)  # best match
        pointList_.append((x_+ template_size[1] / 2,y_))
        cv2.rectangle(
            img,
            (x_,y_),
            (x_ + template_size[1], y_ + template_size[0]),
            (200, 0, 0),
            4)
    return img, pointList_

布局用税课司自动收钱

源码:

https://gitee.com/nickdlk/Python_jiangnan

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nickdlk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值