新增支持逻辑分辨率为2.0的机型
This commit is contained in:
@@ -86,7 +86,7 @@ class AiUtils(object):
|
||||
|
||||
# 模板匹配
|
||||
res = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
|
||||
threshold = 0.7
|
||||
threshold = 0.85
|
||||
loc = np.where(res >= threshold)
|
||||
# 放在 cv2.matchTemplate 之前
|
||||
cv2.imwrite(f'/tmp/runtime_bg_{udid}.png', image)
|
||||
@@ -1394,4 +1394,14 @@ class AiUtils(object):
|
||||
|
||||
|
||||
|
||||
|
||||
@classmethod
|
||||
def _screen_info(cls, udid: str):
|
||||
try:
|
||||
# 避免 c.home() 可能触发的阻塞,直接取 window_size
|
||||
c = wda.USBClient(udid, wdaFunctionPort)
|
||||
size = c.window_size()
|
||||
print(f"[Screen] 成功获取屏幕 {int(size.width)}x{int(size.height)} {udid}")
|
||||
return int(size.width), int(size.height), float(c.scale)
|
||||
except Exception as e:
|
||||
print(f"[Screen] 获取屏幕信息异常: {e} {udid}")
|
||||
return 0, 0, 0.0
|
||||
@@ -151,16 +151,31 @@ class ControlUtils(object):
|
||||
@classmethod
|
||||
def clickLike(cls, session: Client, udid):
|
||||
try:
|
||||
scale = session.scale
|
||||
x, y = AiUtils.findImageInScreen("add", udid)
|
||||
print(x, y)
|
||||
if x > -1:
|
||||
LogManager.method_info("点赞了", "关注打招呼", udid)
|
||||
session.click(x // scale, y // scale + 50)
|
||||
return True
|
||||
from script.ScriptManager import ScriptManager
|
||||
|
||||
width, height, scale = ScriptManager.get_screen_info(udid)
|
||||
|
||||
if scale == 3.0:
|
||||
x, y = AiUtils.findImageInScreen("add", udid)
|
||||
if x > -1:
|
||||
LogManager.method_info(f"点赞了,点赞的坐标是:{x // scale, y // scale + 50}", "关注打招呼", udid)
|
||||
session.click(int(x // scale), int(y // scale + 50))
|
||||
return True
|
||||
else:
|
||||
LogManager.method_info("没有找到目标", "关注打招呼", udid)
|
||||
return False
|
||||
else:
|
||||
LogManager.method_info("没有找到目标", "关注打招呼", udid)
|
||||
return False
|
||||
x, y = AiUtils.findImageInScreen("like1", udid)
|
||||
if x > -1:
|
||||
LogManager.method_info(f"点赞了,点赞的坐标是:{x // scale, y // scale}", "关注打招呼", udid)
|
||||
session.click(int(x // scale), int(y // scale))
|
||||
return True
|
||||
else:
|
||||
LogManager.method_info("没有找到目标", "关注打招呼", udid)
|
||||
return False
|
||||
|
||||
|
||||
|
||||
except Exception as e:
|
||||
LogManager.method_info(f"点赞出现异常,异常的原因:{e}", "关注打招呼", udid)
|
||||
raise False
|
||||
@@ -191,8 +206,6 @@ class ControlUtils(object):
|
||||
# 获取主播详情页的第一个视频
|
||||
@classmethod
|
||||
def clickFirstVideoFromDetailPage(cls, session: Client):
|
||||
# videoCell = session.xpath(
|
||||
# '//Window/Other[1]/Other[1]/Other[1]/Other[1]/Other[1]/Other[1]/Other[1]/Other[1]/Other[1]/Other[2]/Other[1]/ScrollView[1]/Other[1]/CollectionView[1]/Cell[2]')
|
||||
|
||||
videoCell = session.xpath(
|
||||
'(//XCUIElementTypeCollectionView//XCUIElementTypeCell[.//XCUIElementTypeImage[@name="profile_video"]])[1]')
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import os
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
from typing import List, Tuple, Union, Optional
|
||||
@@ -162,6 +164,15 @@ class OCRUtils:
|
||||
centers: [(cx, cy), ...]
|
||||
boxes: [[x1,y1,x2,y2], ...] (np.ndarray, int)
|
||||
"""
|
||||
|
||||
if not os.path.isfile(template_path):
|
||||
print(f"模板文件不存在 → {template_path}")
|
||||
raise FileNotFoundError(f"模板文件不存在 → {template_path}")
|
||||
|
||||
size = os.path.getsize(template_path)
|
||||
if size == 0:
|
||||
print(f"模板文件大小为 0 → {template_path} ")
|
||||
raise ValueError(f"模板文件大小为 0 → {template_path}")
|
||||
# 模板(灰度)
|
||||
template = cv2.imread(template_path, cv2.IMREAD_GRAYSCALE)
|
||||
if template is None:
|
||||
@@ -230,4 +241,4 @@ class OCRUtils:
|
||||
# 全部尝试失败
|
||||
if return_boxes:
|
||||
return last_centers, last_boxes
|
||||
return last_centers
|
||||
return last_centers
|
||||
Reference in New Issue
Block a user