LDB5322071 2023-03-28 19:19 采纳率: 0%
浏览 77
已结题

自动识别图像目标并判断

希望能帮忙编写一个程序
最好是C或者C++
大致需求如下:
在运行开始前由用户输入所需要的对应名称(如:ABCD)
在图像左上角自动点击随机因子,
当侦测到下方出现已匹配到挑战:ABCD时结束随机(不用自动点击确认开始)
(附加:需要在第一次匹配完成后可以手动重新开启随机)
如图,就是自动点击右上方的开始随机,并在下方绿字部分出现已匹配到挑战:ABCD时结束随机
在程序执行前应有用户所需要的ABCD对应的名称(均为四字)

img

  • 写回答

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;
    }

    需要注意的是,这个代码示例只是一个基本的框架,实际应用中还需要根据具体情况进行调整和优化。例如,需要根据实际情况调整模板匹配算法的参数,以提高匹配的准确性和速度。同时,还需要考虑如何处理屏幕分辨率不同的情况,以及如何处理多个目标图像的情况等。
    评论

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 赞助了问题酬金15元 3月28日
  • 修改了问题 3月28日
  • 创建了问题 3月28日

悬赏问题

  • ¥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系统的硬盘