开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 603|回复: 1
收起左侧

[分享] 黎明杀机纯视觉QTE快速时间完美检定

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式   河北省唐山市
纯视觉方式检测屏幕像素变化像素队列和区域排除
此软件为开源软件,仅用于学习研究禁止商用转卖
2026/4/14稳定奔放

  
窗口程序集名保 留  保 留备 注
AQTE   
子程序名返回值类型公开备 注
__cplusplus  
CXX (“#include ”)
CXX (“#include ”)
CXX (“#include ”)
CXX (“#include ”)
CXX (“#include ”)
CXX (“#pragma comment(lib, `winmm.lib`)”)
CXX (“std::vector<像素点> 获取白色区域(                                              ”)
CXX (“const std::vector& 字节集,                                      ”)
CXX (“int 宽度,                                                                      ”)
CXX (“int 高度                                                                       ”)
CXX (“) {                                                                            ”)
CXX (“std::vector<像素点> 结果;                                                      ”)
CXX (“                                                                               ”)
CXX (“const int 每像素字节数 = 4;                                                    ”)
CXX (“std::vector<std::vector> 已访问(高度, std::vector(宽度, false));   ”)
CXX (“const int dx[] = { -1, 1, 0, 0 };                                              ”)
CXX (“const int dy[] = { 0, 0, -1, 1 };                                              ”)
CXX (“                                                                               ”)
CXX (“for (int y = 0; y < 高度; y++) {                                               ”)
CXX (“    for (int x = 0; x < 宽度; x++) {                                           ”)
CXX (“        if (已访问[y][x]) continue;                                            ”)
CXX (“        int 索引 = (y * 宽度 + x) * 每像素字节数;                              ”)
CXX (“        if (索引 + 3 >= (int)字节集.size()) break;                             ”)
CXX (“                                                                               ”)
CXX (“        unsigned char B = 字节集[索引];                                        ”)
CXX (“        unsigned char G = 字节集[索引 + 1];                                    ”)
CXX (“        unsigned char R = 字节集[索引 + 2];                                    ”)
CXX (“                                                                               ”)
CXX (“        // 找到白色起点                                                        ”)
CXX (“        if (R == 255 && G == 255 && B == 255) {                                ”)
CXX (“            std::queue<std::pair> q;                                 ”)
CXX (“            std::vector<像素点> 当前块;                                        ”)
CXX (“                                                                               ”)
CXX (“            q.push({ x, y });                                                  ”)
CXX (“            已访问[y][x] = true;                                               ”)
CXX (“                                                                               ”)
CXX (“            // BFS 搜索整片连续白色区域                                        ”)
CXX (“            while (!q.empty()) {                                               ”)
CXX (“                auto curr = q.front();                                         ”)
CXX (“                q.pop();                                                       ”)
CXX (“                int cx = curr.first;                                           ”)
CXX (“                int cy = curr.second;                                          ”)
CXX (“                当前块.push_back({ cx, cy });                                  ”)
CXX (“                for (int d = 0; d < 4; d++) {                                  ”)
CXX (“                    int nx = cx + dx[d];                                       ”)
CXX (“                    int ny = cy + dy[d];                                       ”)
CXX (“                                                                               ”)
CXX (“                    if (nx < 0 || nx >= 宽度 || ny < 0 || ny >= 高度) continue;”)
CXX (“                    if (已访问[ny][nx]) continue;                              ”)
CXX (“                                                                               ”)
CXX (“                    int idx = (ny * 宽度 + nx) * 每像素字节数;                 ”)
CXX (“                    if (idx + 3 >= (int)字节集.size()) continue;               ”)
CXX (“                                                                               ”)
CXX (“                    unsigned char b = 字节集[idx];                             ”)
CXX (“                    unsigned char g = 字节集[idx + 1];                         ”)
CXX (“                    unsigned char r = 字节集[idx + 2];                         ”)
CXX (“                                                                               ”)
CXX (“                    if (r == 255 && g == 255 && b == 255) {                    ”)
CXX (“                        已访问[ny][nx] = true;                                 ”)
CXX (“                        q.push({ nx, ny });                                    ”)
CXX (“                    }                                                          ”)
CXX (“                }                                                              ”)
CXX (“            }                                                                  ”)
CXX (“                                                                               ”)
CXX (“            // 成片大小 > 5 才保留(真正连续区域,丢弃孤立点)                 ”)
CXX (“            if (当前块.size() > 5) {                                           ”)
CXX (“                结果.insert(结果.end(), 当前块.begin(), 当前块.end());         ”)
CXX (“            }                                                                  ”)
CXX (“        }                                                                      ”)
CXX (“    }                                                                          ”)
CXX (“}                                                                              ”)
CXX (“                                                                               ”)
CXX (“return 结果;                                                                   ”)
CXX (“}                                                                              ”)
CXX (“void 生成居中圆形遮罩(                                         ”)
CXX (“std::vector& imgBytes,                          ”)
CXX (“int imgWidth,                                                  ”)
CXX (“int imgHeight,                                                 ”)
CXX (“int 直径                                                       ”)
CXX (“)                                                              ”)
CXX (“{                                                              ”)
CXX (“const int 通道数 = 4; // BGRA                                  ”)
CXX (“const int 半径 = 直径 / 2;                                     ”)
CXX (“int 圆心X = imgWidth / 2;                                      ”)
CXX (“int 圆心Y = imgHeight / 2;                                     ”)
CXX (“for (int y = 0; y < imgHeight; y++)                            ”)
CXX (“{                                                              ”)
CXX (“    for (int x = 0; x < imgWidth; x++)                         ”)
CXX (“    {                                                          ”)
CXX (“        int 索引 = (y * imgWidth + x) * 通道数;                ”)
CXX (“        if (索引 + 3 >= (int)imgBytes.size())                  ”)
CXX (“            continue;                                          ”)
CXX (“        int dx = x - 圆心X;                                    ”)
CXX (“        int dy = y - 圆心Y;                                    ”)
CXX (“                                                               ”)
CXX (“        if ((dx*dx + dy*dy) > (半径*半径))                     ”)
CXX (“        {                                                      ”)
CXX (“            imgBytes[索引 + 0] = 0; // B                       ”)
CXX (“            imgBytes[索引 + 1] = 0; // G                       ”)
CXX (“            imgBytes[索引 + 2] = 0; // R                       ”)
CXX (“            imgBytes[索引 + 3] = 255; // A(不透明)           ”)
CXX (“        }                                                      ”)
CXX (“    }                                                          ”)
CXX (“}                                                              ”)
CXX (“}                                                              ”)
CXX (“std::vector ConvertBGRAtoBMP(                          ”)
CXX (“const std::vector& bgraPixels,                         ”)
CXX (“int width,                                                            ”)
CXX (“int height                                                            ”)
CXX (“) {                                                                   ”)
CXX (“const int headerSize = 54;                                            ”)
CXX (“int pixelDataSize = width * height * 4;                               ”)
CXX (“std::vector bmpData(headerSize + pixelDataSize, 0);    ”)
CXX (“unsigned char* fileHeader = bmpData.data();                           ”)
CXX (“fileHeader[0] = 'B';                                                  ”)
CXX (“fileHeader[1] = 'M';                                                  ”)
CXX (“unsigned int fileSize = headerSize + pixelDataSize;                   ”)
CXX (“memcpy(fileHeader + 2, &fileSize, 4);                                 ”)
CXX (“unsigned int dataOffset = headerSize;                                 ”)
CXX (“memcpy(fileHeader + 10, &dataOffset, 4);                              ”)
CXX (“unsigned char* infoHeader = bmpData.data() + 14;                      ”)
CXX (“unsigned int infoHeaderSize = 40;                                     ”)
CXX (“memcpy(infoHeader + 0, &infoHeaderSize, 4);                           ”)
CXX (“memcpy(infoHeader + 4, &width, 4);                                    ”)
CXX (“memcpy(infoHeader + 8, &height, 4);                                   ”)
CXX (“unsigned short planes = 1;                                            ”)
CXX (“memcpy(infoHeader + 12, &planes, 2);                                  ”)
CXX (“unsigned short bitCount = 32;                                         ”)
CXX (“memcpy(infoHeader + 14, &bitCount, 2);                                ”)
CXX (“unsigned int compression = 0;                                         ”)
CXX (“memcpy(infoHeader + 16, &compression, 4);                             ”)
CXX (“memcpy(infoHeader + 20, &pixelDataSize, 4);                           ”)
CXX (“unsigned char* dest = bmpData.data() + headerSize;                    ”)
CXX (“const unsigned char* src = bgraPixels.data();                          ”)
CXX (“for (int i = 0; i < width * height; i++) {                            ”)
CXX (“    dest[0] = src[0];    // B                                        ”)
CXX (“    dest[1] = src[1];    // G                                        ”)
CXX (“    dest[2] = src[2];    // R                                        ”)
CXX (“    dest[3] = src[3];    // A                                        ”)
CXX (“    dest += 4;                           


i支持库列表   支持库注释   
elang(未知支持库)
eAPI应用接口支持库
spec特殊功能支持库
</std::pair</std::vector

AQTE-master.zip

499.32 KB, 下载次数: 1, 下载积分: 精币 -2 枚

AQTE.e & AQTE.exe

QQ20260414-214448.png
QQ20260414-213928.png

签到天数: 10 天

 楼主| 发表于 4 天前 | 显示全部楼层   美国
学习交流群与专用易语言编译器下载: 964283733
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表