c语言,识别到黑色就自动开枪,4399单击游戏狙击战场,源码分享,豆包ai出品

不好用,识别速度慢,有时候识别不准确

#include <windows.h>
#include <stdio.h>
#include <math.h> 
HDC hdcScreen;
void leftClick();
void RGBtoHSV(int r, int g, int b, int* h, int* s, int* v);
int fuzzyFindColor(int x1, int y1, int x2, int y2,int targetH, int targetS, int targetV,int hTol, int sTol, int vTol,int* outX, int* outY);
void leftClick() {// 模拟鼠标左键按下mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);// 短暂延迟,模拟真实点击的持续时间Sleep(50);// 模拟鼠标左键释放mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
// 1. RGB转HSV(纯C工具函数,0<=H<=360,0<=S,V<=100)
void RGBtoHSV(int r, int g, int b, int* h, int* s, int* v) {/*作用:将输入的 0-255 整数(硬件设备的绝对亮度值)转换为 0-1 的相对比例(消除绝对值影响,统一计算标准)。细节:除以 255.0f(浮点型)而非 255(整数),确保结果为浮点数(避免整数除法导致的截断)。*/float R = r / 255.0f, G = g / 255.0f, B = b / 255.0f;float max = (R > G ? (R > B ? R : B) : (G > B ? G : B));float min = (R < G ? (R < B ? R : B) : (G < B ? G : B));float delta = max - min;// 计算色相Hif (delta < 1e-6) *h = 0;else if (max == R) *h = (int)(60 * fmod(((G - B) / delta) + 6, 6));else if (max == G) *h = (int)(60 * (((B - R) / delta) + 2));else *h = (int)(60 * (((R - G) / delta) + 4));// 计算饱和度S*s = (max < 1e-6) ? 0 : (int)((delta / max) * 100);// 计算明度V*v = (int)(max * 100);
}// 2. 区域模糊找色(返回第一个匹配点坐标)
// 参数:x1,y1/x2,y2=查找区域;targetH/S/V=目标颜色;h/s/vTol=模糊阈值;outX/outY=输出坐标
int fuzzyFindColor(int x1, int y1, int x2, int y2,int targetH, int targetS, int targetV,int hTol, int sTol, int vTol,int* outX, int* outY) {// 校验区域合法性if (x1 > x2 || y1 > y2) return 0;// 获取屏幕设备上下文(DC)//hdcScreen = CreateDCA("DISPLAY", NULL, NULL, NULL);hdcScreen=GetDC(NULL);//2if (!hdcScreen) return 0;int h, s, v;COLORREF pixel; // 存储RGB颜色(0x00BBGGRR)int r, g, b;// 遍历区域内所有像素for (int y = y1; y <= y2; y++) {for (int x = x1; x <= x2; x++) {// 读取当前像素的RGB值pixel = GetPixel(hdcScreen, x, y);r = GetRValue(pixel); // 提取红色分量g = GetGValue(pixel); // 提取绿色分量b = GetBValue(pixel); // 提取蓝色分量// RGB转HSVRGBtoHSV(r, g, b, &h, &s, &v);//	printf("RGB %d, %d,%d)\n", r, g, b);//	printf("hsv %d, %d,%d)\n", h, s, v);// 模糊匹配:判断HSV是否在阈值范围内if ((h >= targetH - hTol && h <= targetH + hTol) &&(s >= targetS - sTol && s <= targetS + sTol) &&(v >= targetV - vTol && v <= targetV + vTol)) {*outX = x;*outY = y;//DeleteDC(hdcScreen); // 释放资源ReleaseDC(NULL, hdcScreen);//2leftClick();return 1; // 找到匹配点}}}//DeleteDC(hdcScreen); // 释放资源ReleaseDC(NULL, hdcScreen);//2return 0; // 未找到
}// 3. 测试主函数
int main() {while (1){int matchX, matchY;// 需求:在(100,100)-(800,600)区域找HSV(30,80,90),阈值H±3、S±8、V±15int found = fuzzyFindColor(537	, 533, 543, 538,180, 50, 8,179, 49, 7,&matchX, &matchY);if (found) {printf("--------------------------------------------------------------找到匹配点!坐标:(%d, %d)\n", matchX, matchY);Sleep(1000);}else {printf("未找到匹配颜色未找到匹配颜色未找到匹配颜色\n");}//system("pause"); // 暂停查看结果}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96373.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电动汽车充电标准之 — SAE J1772“电动汽车传导充电连接器”简介

SAE J1772&#xff08;通常读作 "J seventeen seventy-two"&#xff09;是由美国汽车工程师学会&#xff08;SAE&#xff09;制定的&#xff0c;针对电动汽车传导充电连接器的北美标准。它规范了电动汽车&#xff08;EV&#xff09;与充电设备&#xff08;EVSE&#…

ZooKeeper Multi-op+乐观锁实战优化:提升分布式Worker节点状态一致性

系列文章目录 第一章 ZooKeeper入门概述:Znode,Watcher,ZAB . 第二章 技术解析&#xff1a;基于 ZooKeeper 实现高可用的主-从协调系统&#xff08;通过例子深入理解Zookeeper如何进行协调分布式系统&#xff09; 第三章 基于 ZooKeeper 的主从模式任务调度系统&#xff1a;设…

生产制造过程精益化

一、核心原则&#xff1a;以“消除浪费、创造价值”为核心精益化的本质是通过系统性优化流程&#xff0c;最大化客户价值&#xff0c;最小化资源浪费&#xff08;时间、成本、库存等&#xff09;&#xff0c;核心原则包括&#xff1a;1. 价值导向原则定义客户价值&#xff1a;从…

Ping命令为何选择ICMP而非TCP/UDP?

在网络诊断工具中&#xff0c;ping是最常用的命令之一&#xff0c;它用于测试主机之间的连通性。有趣的是&#xff0c;ping命令并不使用TCP或UDP这些传输层协议&#xff0c;而是基于网络层的ICMP协议。这背后的设计选择体现了计算机网络协议栈的分层智慧和特定用途的优化。ICMP…

VGGNet:为什么16层简单堆叠能成为CNN经典?

配套笔记&讲解视频,点击文末名片获取 研究背景和动机 在 VGG 出现之前,图像识别就像“盲人摸象”: 计算机看一张图,只能凭感觉抓几个零散的“特征点”, 结果忽好忽坏,时灵时不灵。 大家发现,如果把“看图的流程”做得更深、更系统,准确率就能蹭蹭往上涨。于是“深一…

springboot+vue医院诊疗管理系统(源码+文档+调试+基础修改+答疑)

目录 一、整体目录&#xff08;示范&#xff09;&#xff1a; 文档含项目技术介绍、E-R图、数据字典、项目功能介绍与截图等 二、运行截图 三、代码部分&#xff08;示范&#xff09;&#xff1a; 四、数据库表(示范)&#xff1a; 数据库表有注释&#xff0c;可以导出数据…

云蝠智能大模型呼叫新模型上线,拥抱AGI

在人工智能浪潮席卷全球的今天&#xff0c;AGI&#xff08;通用人工智能&#xff09;已不再遥不可及&#xff0c;而是正逐步成为驱动产业变革的核心力量。在这场技术革命中&#xff0c;云蝠智能以其前瞻性的战略布局和技术创新&#xff0c;再次引领行业风向——全新大模型呼叫模…

晨控CK-GW08S-PN与西门子PLC配置Profinet通讯连接操作手册

晨控CK-GW08S-PN与西门子PLC配置Profinet通讯连接操作手册晨控CK-GW08S系列作为晨控智能工业级别网关型RFID读写器,支持大部分工业协议如RS232、RS485、以太网。支持工业协议Modbus RTU、Modbus TCP、Profinet、EtherNet/lP、EtherCat以及自由协议TCP/IP等。本期主题&#xff1…

【Linux】Linux常用指令合集

本文是小编巩固自身而作&#xff0c;如有错误&#xff0c;欢迎指出&#xff01; 目录 一、文件与目录操作 (1) 查看目录&#xff0c;切换目录 pwd ls cd &#xff08;2&#xff09;创建、 删除 mkdir touch rmdir rm cp mv 二、文件的查看及更改 (1)查看和更改 …

MySQL 高级特性与性能优化:深入理解函数、视图、存储过程、触发器

大家好&#xff01;今天我们要深入探讨 MySQL 中一些非常重要的高级主题——内置函数、视图、存储过程、触发器、索引、事务和锁机制。无论你是刚开始学习数据库的新手&#xff0c;还是经验丰富的开发者&#xff0c;掌握这些知识点都将极大提升你的开发效率和数据管理能力。一.…

Linux学习:基于环形队列的生产者消费者模型

目录1. 环形队列的概念与实现方法1.1 环形队列的概念1.2 环形队列的一般实现方法2. 多线程相关的信号量概念与接口2.1 信号量类型2.2 信号量的初始化与销毁2.3 信号量的P申请、V释放操作3. 基于环形队列实现p、c模型的设计方案3.1 环形队列&#xff08;ringqueue&#xff09;作…

【左程云算法07】队列和栈-链表数组实现

目录 ​编辑1&#xff09;队列的介绍 核心操作 3&#xff09;队列的链表实现和数组实现 使用数组实现队列 2&#xff09;栈的介绍 核心操作 4&#xff09;栈的数组实现 使用语言内置的实现 使用数组手动实现栈 5&#xff09;环形队列的实现 leecode622 代码解析 视频…

Docker 清理完整指南:释放磁盘空间的最佳实践

前言 随着 Docker 使用时间的增长,系统中会积累大量的容器、镜像、数据卷和构建缓存,占用大量磁盘空间。本文将详细介绍如何有效清理 Docker 资源,释放磁盘空间,保持系统整洁。 Docker 资源类型 Docker 主要占用磁盘空间的资源包括: 容器 (Containers):运行中和已停止…

零基础快速了解掌握Linux防火墙-Iptables

一、 Iptables概述Iptables 是一个用户空间程序&#xff0c;可以用于设置和管理 Linux 操作系统的内核级防火墙。它通过表、链和 规则组成&#xff0c;可以灵活地根据不同的需求进行配置。iptables 具有以下特点&#xff1a;Iptables 作为内核级别的防火墙&#xff0c;具有高效…

12公里无人机图传模组:从模糊到超高清的飞跃,抗干扰能力全面升级

在无人机行业飞速发展的今天&#xff0c;高清图像传输已成为衡量无人机性能的重要标志之一。过去&#xff0c;无人机在长距离飞行时常常面临信号衰减、图像模糊&#xff0c;甚至数据丢失的问题&#xff0c;影响了用户的体验与应用效果。为了打破这一瓶颈&#xff0c;业内专家不…

从 “模板” 到 “场景”,用 C++ 磨透拓扑排序的实战逻辑

文章目录前言&#xff1a;《算法磨剑: 用C思考的艺术》 专栏《C&#xff1a;从代码到机器》 专栏《Linux系统探幽&#xff1a;从入门到内核》 专栏正文&#xff1a;[B3644 【模板】拓扑排序 / 家谱树](https://www.luogu.com.cn/problem/B3644)【解法】【参考代码】[P2712 摄像…

盲盒抽卡机小程序:从0到1的蜕变之路

盲盒抽卡机小程序从概念提出到最终上线&#xff0c;经历了从0到1的蜕变过程。这个过程充满了挑战与机遇&#xff0c;也凝聚了开发团队的智慧和汗水。本文将分享盲盒抽卡机小程序的开发历程&#xff0c;探讨其背后的技术实现和市场策略。需求分析&#xff1a;明确目标用户与市场…

分层-三层架构

文章目录介绍代码拆分Dao层server层controller层运行结果介绍 在我们进行程序设计以及程序开发时&#xff0c;尽可能让每一个接口、类、方法的职责更单一些&#xff08;单一职责原则&#xff09;。 单一职责原则&#xff1a;一个类或一个方法&#xff0c;就只做一件事情&#…

Vue2 VS Vue3

vue3 是的&#xff0c;Vue 3 确实取消了基于 JavaScript 原型的 Vue 和 VueComponent 构造函数&#xff08;即你提到的 vm 和 vc&#xff09;&#xff0c;取而代之的是一种完全不同的、基于普通对象和代理&#xff08;Proxy&#xff09;的实例管理方式。 这是一个颠覆性的改变…

Vue3入门到实战,最新版vue3+TypeScript前端开发教程,Vue3简介,笔记02

笔记02 一、Vue3简介 1.1、Vue3发布日期&#xff1a; 2020年9月18日 1.2、Vue3做了哪些升级&#xff1a; 1.2.1、性能的提升 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 打包大小减少41%初次渲染快55%更新渲染快133%内容减少54% 1.2.2、源码的优化…