检测特定文本的 x y 坐标
Detect x y coordinates of specific text
我尝试使用 Tasker 和 AutoTools 插件为 Android 中的游戏编写自动化程序。此时一切正常,但我需要捕获屏幕截图并根据我的需要对其进行解释。
这正是我需要的;
有些文字在游戏中很重要,我想在屏幕上的任何位置点击它。所以我认为我需要 OCR 来完成这项任务。我遵循了一些解决方案,但每次都失败或卡住。让我解释一下我尝试了哪些解决方案。
以下解决方案 1:
- 我尝试了 AutoInput(Tasker 插件)UI查询方法但失败了。因为我认为 UI AutoInput 的查询仅适用于 android UI。无法从游戏等 3D 应用程序中获取任何信息。
以下解决方案 2:
我搜索 OCR 解决方案并找到 AutoTools(Tasker 插件)
创建任务并截取屏幕截图并使用 AutoTools OCR 方法对其进行解释。没关系。 AutoTools OCR 成功地从图像文件中读取文本。
但是我又卡住了。因为我成功地从图像文件中读取了一个文本,但我不知道重要文本的 x y 坐标。
此时有什么建议?
我应该学习 android 并编写自己的应用程序吗?
您应该查看 ocr-reader Google 示例。 运行 很快,而且不太难找到您要找的东西。你需要做的是修改示例附带的 OcrDetectorProcess
将文本分解为单个单词,然后你可以轻松计算每个单词的边界和中心点。这里有一些代码可以帮助您入门:
@Override
public void receiveDetections(Detector.Detections<TextBlock> detections) {
mGraphicOverlay.clear();
// Get all detected items.
SparseArray<TextBlock> items = detections.getDetectedItems();
for (int i = 0; i < items.size(); ++i) {
TextBlock item = items.valueAt(i);
// Get individual lines in each item.
List<Line> lines = (List<Line>) item.getComponents();
for (Line line : lines) {
// Get individual "words" in each line.
List<Element> elements = (List<Element>) line.getComponents();
for (Element e : elements) {
// Now get the position of each element.
Rect rect = e.getBoundingBox();
Point[] points = e.getCornerPoints();
int centerX = (points[0].x + points[2].x) / 2;
int centerY = (points[0].y + points[2].y) / 2;
// DO STUFF
}
}
}
}
我与编写 "AutoTools" Tasker 插件的开发人员联系。
He/She给插件加点功能解决
插件,现在可以使用 OCR 授权图像和 return 个单词以及每个单词的 xy 位置中心进行解释。
如果有人像此功能一样搜索 Android 和 Tasker App,请访问 this forum topic link。很有用。
我尝试使用 Tasker 和 AutoTools 插件为 Android 中的游戏编写自动化程序。此时一切正常,但我需要捕获屏幕截图并根据我的需要对其进行解释。
这正是我需要的;
有些文字在游戏中很重要,我想在屏幕上的任何位置点击它。所以我认为我需要 OCR 来完成这项任务。我遵循了一些解决方案,但每次都失败或卡住。让我解释一下我尝试了哪些解决方案。
以下解决方案 1:
- 我尝试了 AutoInput(Tasker 插件)UI查询方法但失败了。因为我认为 UI AutoInput 的查询仅适用于 android UI。无法从游戏等 3D 应用程序中获取任何信息。
以下解决方案 2:
我搜索 OCR 解决方案并找到 AutoTools(Tasker 插件)
创建任务并截取屏幕截图并使用 AutoTools OCR 方法对其进行解释。没关系。 AutoTools OCR 成功地从图像文件中读取文本。
但是我又卡住了。因为我成功地从图像文件中读取了一个文本,但我不知道重要文本的 x y 坐标。
此时有什么建议?
我应该学习 android 并编写自己的应用程序吗?
您应该查看 ocr-reader Google 示例。 运行 很快,而且不太难找到您要找的东西。你需要做的是修改示例附带的 OcrDetectorProcess
将文本分解为单个单词,然后你可以轻松计算每个单词的边界和中心点。这里有一些代码可以帮助您入门:
@Override
public void receiveDetections(Detector.Detections<TextBlock> detections) {
mGraphicOverlay.clear();
// Get all detected items.
SparseArray<TextBlock> items = detections.getDetectedItems();
for (int i = 0; i < items.size(); ++i) {
TextBlock item = items.valueAt(i);
// Get individual lines in each item.
List<Line> lines = (List<Line>) item.getComponents();
for (Line line : lines) {
// Get individual "words" in each line.
List<Element> elements = (List<Element>) line.getComponents();
for (Element e : elements) {
// Now get the position of each element.
Rect rect = e.getBoundingBox();
Point[] points = e.getCornerPoints();
int centerX = (points[0].x + points[2].x) / 2;
int centerY = (points[0].y + points[2].y) / 2;
// DO STUFF
}
}
}
}
我与编写 "AutoTools" Tasker 插件的开发人员联系。
He/She给插件加点功能解决
插件,现在可以使用 OCR 授权图像和 return 个单词以及每个单词的 xy 位置中心进行解释。
如果有人像此功能一样搜索 Android 和 Tasker App,请访问 this forum topic link。很有用。