希望能帮忙编写一个程序
最好是C或者C++
大致需求如下:
在运行开始前由用户输入所需要的对应名称(如:ABCD)
在图像左上角自动点击随机因子,
当侦测到下方出现已匹配到挑战:ABCD时结束随机(不用自动点击确认开始)
(附加:需要在第一次匹配完成后可以手动重新开启随机)
如图,就是自动点击右上方的开始随机,并在下方绿字部分出现已匹配到挑战:ABCD时结束随机
在程序执行前应有用户所需要的ABCD对应的名称(均为四字)
自动识别图像目标并判断
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 小逸2023 2023-03-28 19:25关注该回答引用ChatGPT
这个问题需要使用图像处理和模式识别技术来实现。以下是一个基本的思路:
1. 使用OpenCV库读取屏幕截图,并将其转换为灰度图像。
2. 使用模板匹配算法在灰度图像中搜索目标图像(即用户输入的名称)。
3. 如果找到了目标图像,则停止随机因子的点击。
4. 如果没有找到目标图像,则继续点击随机因子,并重复步骤1-3。
以下是一个简单的C++代码示例,用于实现上述思路:c++
#include
#include
using namespace cv;
using namespace std;
int main()
{
// 读取目标图像
Mat target = imread("target.png", IMREAD_GRAYSCALE);
// 获取屏幕分辨率
int screen_width = GetSystemMetrics(SM_CXSCREEN);
int screen_height = GetSystemMetrics(SM_CYSCREEN);
// 创建窗口
namedWindow("Screen", WINDOW_NORMAL);
resizeWindow("Screen", screen_width, screen_height);
// 循环处理屏幕截图
while (true)
{
// 截取屏幕图像
Mat screen;
HDC hdcScreen = GetDC(NULL);
HDC hdc = CreateCompatibleDC(hdcScreen);
HBITMAP hBitmap = CreateCompatibleBitmap(hdcScreen, screen_width, screen_height);
HGDIOBJ hOld = SelectObject(hdc, hBitmap);
BitBlt(hdc, 0, 0, screen_width, screen_height, hdcScreen, 0, 0, SRCCOPY);
screen = Mat(screen_height, screen_width, CV_8UC4);
GetBitmapBits(hBitmap, screen_height * screen_width * 4, screen.data);
SelectObject(hdc, hOld);
DeleteDC(hdc);
ReleaseDC(NULL, hdcScreen);
cvtColor(screen, screen, COLOR_BGRA2GRAY);
// 模板匹配
Mat result;
matchTemplate(screen, target, result, TM_CCOEFF_NORMED);
double minVal, maxVal;
Point minLoc, maxLoc;
minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc);
// 判断是否找到目标图像
if (maxVal > 0.9)
{
// 停止随机因子的点击
break;
}
else
{
// 点击随机因子
// ...
}
// 显示屏幕截图
imshow("Screen", screen);
waitKey(1);
}
// 释放窗口
destroyWindow("Screen");
return 0;
}
需要注意的是,这个代码示例只是一个基本的框架,实际应用中还需要根据具体情况进行调整和优化。例如,需要根据实际情况调整模板匹配算法的参数,以提高匹配的准确性和速度。同时,还需要考虑如何处理屏幕分辨率不同的情况,以及如何处理多个目标图像的情况等。解决 无用评论 打赏 举报
悬赏问题
- ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
- ¥15 数据可视化Python
- ¥15 要给毕业设计添加扫码登录的功能!!有偿
- ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥15 stable diffusion
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘