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
英文地址,請注明出處:http://en.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、源碼的優化…