0
点赞
收藏
分享

微信扫一扫

手机顺风出行

# -*- coding: utf-8 -*-
"""
手机屏幕截图的代码: screenshot.py
"""
import subprocess,random
import os
import sys
from PIL import Image
import os
import time
import cv2


# SCREENSHOT_WAY 是截图方法,经过 check_screenshot 后,会自动递减,不需手动修改
SCREENSHOT_WAY = 1


def pull_screenshot(xh,sjh,xx):
"""
获取屏幕截图,目前有 0 1 2 3 四种方法,未来添加新的平台监测方法时,
可根据效率及适用性由高到低排序
"""
global SCREENSHOT_WAY
SCREENSHOT_WAY=xh
if 1 <= SCREENSHOT_WAY <= 3:
process = subprocess.Popen(
'adb -s {0} shell screencap -p'.format(sjh),
shell=True, stdout=subprocess.PIPE)
binary_screenshot = process.stdout.read()
if SCREENSHOT_WAY == 2:
binary_screenshot = binary_screenshot.replace(b'\r\n', b'\n')
elif SCREENSHOT_WAY == 1:
binary_screenshot = binary_screenshot.replace(b'\r\r\n', b'\n')
au='tmall'+str(xx)+'.png'
with open(au, 'wb') as fa:
fa.write(binary_screenshot)

elif SCREENSHOT_WAY == 0:
os.system('adb -s {0} shell screencap -p /sdcard/tmall.png'.format(sjh))
os.system('adb -s {0} pull /sdcard/tmall.png .'.format(sjh))


def check_screenshot(xh,sjh):
"""
检查获取截图的方式
"""
global SCREENSHOT_WAY
if os.path.isfile('tmall.png'):
try:
os.remove('tmall.png')
except Exception:
pass
if SCREENSHOT_WAY < 0:
print('暂不支持当前设备')
sys.exit()
#xh=1
pull_screenshot(xh,sjh)
try:
Image.open('./tmall.png').load()
print('采用方式 {} 获取截图'.format(SCREENSHOT_WAY))
except Exception:
SCREENSHOT_WAY -= 1
check_screenshot()

def find_button(target, template):
"""
寻找target图片在template中的位置,返回应该点击的坐标。
"""
theight,twidth = target.shape[:2]
# 执行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED
result = cv2.matchTemplate(target, template, cv2.TM_SQDIFF_NORMED)

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# 如果匹配度小于99%,就认为没有找到。
if min_val > 0.01:
return None
strmin_val = str(min_val)
print(strmin_val)
# 绘制矩形边框,将匹配区域标注出来

# cv2.rectangle(template, min_loc, (min_loc[0] + twidth, min_loc[1] + theight), (0, 0, 225), 2)
# cv2.imshow("MatchResult----MatchingValue="+strmin_val, template)
# cv2.imwrite('1.png', template, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
# cv2.waitKey()
# cv2.destroyAllWindows()
x = min_loc[0] + twidth//3
y = min_loc[1] + theight//3
return (x, y)
sjh="pvq4nrx4kze"
aak="adb shell input swipe 200 500 200 1100"
aakx="adb -s {0} shell am start -n com.kuaishou.nebula/com.yxcorp.gifshow.HomeActivity".format(sjh)
xx=2
beitu="./shunfeng.png"
while 1:
pull_screenshot(2,sjh,xx)
au='./tmall'+str(xx)+'.png'
temp = cv2.imread(au)
target = cv2.imread(beitu)
pos = find_button(target,temp)

if pos:
print(pos)
else:
process = subprocess.Popen(aakx,shell=True)
print("找到目标了")
break
time.sleep(10)
#huadong(sjh)
process = subprocess.Popen(aak,shell=True)
time.sleep(2)





举报

相关推荐

0 条评论