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 将安全信息用到以下对象时发生以下错误:c:dumpstack.log.tmp 另一个程序正在使用此文件,因此无法访问
  • ¥15 速度位置规划实现精确定位的问题
  • ¥15 代码问题:df = pd.read_excel('c:\User\18343\Desktop\wpsdata.xlxs')路径读不到
  • ¥15 为什么视频算法现在全是动作识别?
  • ¥15 编写一段matlab代码
  • ¥15 用Python做岩石类别鉴定软件
  • ¥15 关于调取、提交更新数据库记录的问题
  • ¥15 之前删了盘从下vs2022遇见这个问题 搞了一整天了
  • ¥15 从Freecad中宏下载的DesignSPHysics,出现如下问题是什么原因导致的(语言-python)
  • ¥30 notepad++ 自定义代码补全提示