下载adb工具

链接:https://pan.baidu.com/s/1fuobUremdbrs2uQ2Yvo5NQ

提取码:or7m

查看设备

adb devices

测试截图

将截屏文件保存到电脑上

import subprocess

class Screenshot(): # 截取手机屏幕并保存到电脑

def __init__(self):

# 查看连接的手机

connect = subprocess.Popen("adb devices", stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)

stdout, stderr = connect.communicate() # 获取返回命令

# 输出执行命令结果结果

stdout = stdout.decode("utf-8")

stderr = stderr.decode("utf-8")

print(stdout)

print(stderr)

def screen(self, cmd): # 在手机上截图

screenExecute = subprocess.Popen(str(cmd), stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)

stdout, stderr = screenExecute.communicate()

# 输出执行命令结果结果

stdout = stdout.decode("utf-8")

stderr = stderr.decode("utf-8")

print(stdout)

print(stderr)

def saveComputer(self, cmd): # 将截图保存到电脑

screenExecute = subprocess.Popen(str(cmd), stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)

stdout, stderr = screenExecute.communicate()

# 输出调试信息

print(stdout, stderr)

# 先截图保存到手机中保存

cmd1 = r"adb shell /system/bin/screencap -p /sdcard/tmp.png"

# 然后将手机中的图片保存到电脑上

cmd2 = r"adb pull /sdcard/tmp.png tmp.png"

screen = Screenshot()

screen.screen(cmd1)

screen.saveComputer(cmd2)

简化

import subprocess

def get_screen():

# 先截图保存到手机中保存

cmd_screen_cap = "adb shell /system/bin/screencap -p /sdcard/tmp.png"

# 然后将手机中的图片保存到电脑上

cmd_save_computer = "adb pull /sdcard/tmp.png tmp.png"

subprocess.Popen(

cmd_screen_cap,

stderr=subprocess.PIPE,

stdout=subprocess.PIPE,

shell=True

).communicate()

subprocess.Popen(

cmd_save_computer,

stderr=subprocess.PIPE,

stdout=subprocess.PIPE,

shell=True

).communicate()

get_screen()

opencv的模板匹配

import cv2

img = cv2.imread('img.png')

part = cv2.imread('close.png')

cv2.imshow('img', img)

cv2.imshow('close', part)

methods = [cv2.TM_SQDIFF_NORMED, cv2.TM_CCORR_NORMED, cv2.TM_CCOEFF_NORMED]

part_height, part_weight = part.shape[:2]

print(part_height, part_weight)

for method in methods:

# print(method)

result = cv2.matchTemplate(img, part, method)

# print(result)

# 根据不同的公式计算不同的值

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

print(min_val, max_val, min_loc, max_loc)

# 根据不同的算法,选择匹配程度最大的区域

if method == cv2.TM_SQDIFF_NORMED:

# 该算法值越小,匹配程度越高

img_loc = min_loc

else:

img_loc = max_loc

br = (img_loc[0] + part_weight, img_loc[1] + part_height)

cv2.rectangle(img, img_loc, br, (0, 0, 255), 2)

cv2.circle(img, (img_loc[0] + part_weight // 2, img_loc[1] + part_height//2), 2, (255, 0, 0))

cv2.imshow("match" + str(method), img)

cv2.imshow("res" + str(method), result)

cv2.waitKey(1000)

cv2.waitKey(0)

可以看到已经能够找到关闭的中心坐标

配合到一起

使用第一种匹配方法,值越小匹配程度越高,在实际测试中发现,第二和第三种方法,会对一些符号误判,对展开列表的箭头和类似形状的文字无法分别

import subprocess

import cv2 as cv

import time

import numpy as np

def get_screen():

# 先截图保存到手机中保存

cmd_screen_cap = "adb shell /system/bin/screencap -p /sdcard/tmp.png"

# 然后将手机中的图片保存到电脑上

cmd_save_computer = "adb pull /sdcard/tmp.png tmp.png"

subprocess.Popen(

cmd_screen_cap,

stderr=subprocess.PIPE,

stdout=subprocess.PIPE,

shell=True

).communicate()

subprocess.Popen(

cmd_save_computer,

stderr=subprocess.PIPE,

stdout=subprocess.PIPE,

shell=True

).communicate()

return cv.imread('tmp.png')

# 返回最优匹配图的中心点

def get_center(img, part):

part_height, part_weight = part.shape[:2]

methods = [cv.TM_SQDIFF_NORMED, cv.TM_CCORR_NORMED, cv.TM_CCOEFF_NORMED]

method = methods[0]

result = cv.matchTemplate(img, part, method)

# 根据不同的公式计算不同的值

min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result)

# 根据不同的算法,选择匹配程度最大的区域

if method == cv.TM_SQDIFF_NORMED:

# 该算法值越小,匹配程度越高

img_loc = min_loc

else:

img_loc = max_loc

point = (img_loc[0] + part_weight // 2, img_loc[1] + part_height // 2)

print(np.min(result))

return point if np.min(result) <= .0006 else None

# 点击一个位置

def touch(point):

cmd = f"adb shell input tap {point[0]} {point[1]}"

subprocess.Popen(

cmd,

stderr=subprocess.PIPE,

stdout=subprocess.PIPE,

shell=True

).communicate()

# 关闭按钮

close = cv.imread('close.png')

# 自动关闭对话框

def auto_close():

img = get_screen()

# 关闭按钮所在中心

point = get_center(img, close)

print(point)

if point:

touch(point)

# 每隔五秒点击一次

duration = 5

while True:

auto_close()

time.sleep(duration)

在实际中通过设置一个很小的阈值来避免出现误判,可以看到大多时候都是没有返回值的,只有出现选项时,才会返回关闭按钮所在的位置坐标,然后自动关闭~

python写刷课脚本_python opencv 知到 刷课 脚本相关推荐

  1. python 题库自动答题,自动匹配题库_如何用python写一个从题库自动匹配的答题脚本_淘题吧...

    A. web数据库题目:根据用户输入的用户名和密码于数据库中的记录是否匹配制作一个用户登录模块 http://blog.csdn.net/love_leve/article/details/43226 ...

  2. python开发游戏脚本_Python开发游戏开服脚本

    #!/usr/bin/env python #coding:utf-8 from pymongo import MongoClient import datetime import random im ...

  3. python图片旋转脚本_Python+OpenCV 实现图片无损旋转90°且无黑边

    0. 引言 有如上一张图片,在以往的图像旋转处理中,往往得到如图所示的图片. 然而,在进行一些其他图像处理或者图像展示时,黑边带来了一些不便.本文解决图片旋转后出现黑边的问题,实现了图片尺寸不变的旋转 ...

  4. python写一个自动登录脚本_Python 脚本登录交换机实现自动配置备份

    Python 脚本登录交换机实现自动配置备份 一.Python脚本 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramik ...

  5. python写淘宝秒杀脚本_python实现淘宝秒杀脚本

    本文实例为大家分享了python实现淘宝秒杀脚本的具体代码,供大家参考,具体内容如下 1.安装pycharm.网上教程很多. 2.安装 Selenium 库. Selenium支持很多浏览器,我选择的 ...

  6. 网课python程序设计答案_Python程序设计知到网课答案

    程序What can you say when you provide catering service? 工程技术类职位要求应聘者在相关的专业知识基础上具备筹划.设计论证.设计设计.组织实施以及解决 ...

  7. python写的hadoop实战_python api 实战

    如何在 Apache Flink 中使用 Python API? 作者:孙金城(金竹)整理:韩非 本文根据 Apache Flink 系列直播课程整理而成,由 Apache Flink PMC,阿里巴 ...

  8. python游戏挂机脚本_Python简单实现阴阳师挂机脚本

    参考大佬们的博客,凑出了阴阳师的简单挂机脚本,对各个博主进行感谢,鞠躬.jpg 实现原理: 对各个按钮等需要点击的地方进行截图,然后对整个屏幕截屏,通过模板匹配得到截图在截屏中的坐标位置,进行点击 实 ...

  9. python写完程序保存_Python学习笔记——文件处理

    1.文件路径 1.1 不同系统环境下的路径 1.2 当前工作目录 1.3 绝对路径和相对路径 1.4 新建文件夹-- os.makedirs() 2.文件的读写 2.1 打开文件 2.2 读写文件 3 ...

  10. python 画在同一坐标轴_Python学习第95课-多个数据在同一个坐标轴画图叠加

    [每天几分钟,从零入门python编程的世界!] 我们已经学过了绘制折线图.柱状图.直方图.散点图.饼状图和堆栈图. 这节课我们学习如何把多个数据画图叠加,这种图形可以用作多组数据的对比. 下面我们通 ...

最新文章

  1. 【计算机视觉】EmguCV学习笔记(3)ROI区域图像叠加以及初级图像混合
  2. 压力测试工具ab 及 centos下单独安装方法
  3. no awt in java.libary.path
  4. Python获取本地mac地址、主机名、IP地址
  5. 架构设计 | 基于消息中间件,图解柔性事务一致性
  6. ubantu安装coturn穿透服务器
  7. RabbitMQ入门(三)-Publish/Subscribe(发布/订阅)
  8. [linux-内核]内核日志及printk结构浅析
  9. 关于ES6 Class语法相关总结
  10. 诺顿防毒软件曝漏洞 任意下载运行恶意代码(转)
  11. 【精华】PS十大抠图技法(上)
  12. redis 中pipline,mset, mget使用对比
  13. Axure 灯箱效果
  14. 优化后的sql 语句 oracle
  15. 智能硬件蓝牙配网方案概要
  16. 程序员:品《漱玉词》看李清照生活审美
  17. HTML5 APP从入门到精通
  18. 做人有弹性,做事有韧性
  19. 图数据结构之邻接矩阵Adjacency Matrix(Python版)
  20. 聊聊汽车ECU中单片机开发

热门文章

  1. MOEA/D算法原理及应用方向
  2. Verilog描述——一位全加器,四选一选择器,计数器
  3. 如何准备软件评测师考试
  4. Pattern 模式器: Matcher 匹配器
  5. 无线网络安全技术基础
  6. 00_51入门知识积累__学看电路原理图
  7. manual 离线手册 韩顺平php_传智播客韩顺平php视频教程(400集全)
  8. 基于Packet Tracer 的校园网络设计方案(计算机网络与通信技术课程实验)(二)——IP网络仿真配置
  9. 自定义小型ajax框架-ajax讲义二
  10. android tf卡检测工具,检测SD卡真假!安卓App一键识破SD卡真伪