QT開發技術 【opencv圖片裁剪,平均哈希相似度判斷,以及獲取游戲窗口圖片】

一、圖片裁剪

int CJSAutoWidget::GetHouseNo(cv::Mat matMap)
{cv::imwrite(m_strPath + "/Data/map.png", matMap);for (int i = 0; i < 4; ++i){for (int j = 0; j < 6; ++j){// 計算當前子區域的矩形cv::Rect roi(j * 20, i * 17, 20, 17);// 提取子區域cv::Mat smallImage = matMap(roi);//double dDiffValue = GetDiffAvgHash(m_matBossImg, smallImage);// 小于20則認為相同cv::imwrite(m_strPath + "/Data/role_" + std::to_string(i * 6 + j + 1) + ".png", smallImage);std::cout  << " " << i * 6 + j + 1 << std::endl;if (IsRed(smallImage)){std::cout << "紅色房間" << std::endl;}else{std::cout << "不是紅色房間" << std::endl;}}}return 0;
}

在這里插入圖片描述

二、平均哈希相似度判斷

int CJSAutoWidget::GetDiffAvgHash(cv::Mat matSrc1, cv::Mat matSrc2)
{cv::Mat matDst1, matDst2;cv::resize(matSrc1, matDst1, cv::Size(8, 8), 0, 0, cv::INTER_CUBIC);cv::resize(matSrc2, matDst2, cv::Size(8, 8), 0, 0, cv::INTER_CUBIC);cv::cvtColor(matDst1, matDst1, cv::COLOR_BGR2GRAY);cv::cvtColor(matDst2, matDst2, cv::COLOR_BGR2GRAY);int nAvg1 = 0, nAvg2 = 0;int nArr1[64], nArr2[64];for (int i = 0; i < 8; i++){uchar* data1 = matDst1.ptr<uchar>(i);uchar* data2 = matDst2.ptr<uchar>(i);int nTmp = i * 8;for (int j = 0; j < 8; j++){int nTmp1 = nTmp + j;nArr1[nTmp1] = data1[j] / 4 * 4;nArr2[nTmp1] = data2[j] / 4 * 4;nAvg1 += nArr1[nTmp1];nAvg2 += nArr2[nTmp1];}}nAvg1 /= 64;nAvg2 /= 64;for (int i = 0; i < 64; i++){nArr1[i] = (nArr1[i] >= nAvg1) ? 1 : 0;nArr2[i] = (nArr2[i] >= nAvg2) ? 1 : 0;}int nDiffNum = 0;for (int i = 0; i < 64; i++){if (nArr1[i] != nArr2[i]){++nDiffNum;}}return nDiffNum;
}

三、獲取游戲窗口圖片

QImage CJSAutoWidget::GetDNFImage()
{HWND hwnd = FindWindowA(NULL, m_strGameName.c_str());if (hwnd == NULL) {std::cout << "無法找到游戲窗口" << std::endl;return QImage();}// 獲取窗口的位置和大小RECT rect;::GetWindowRect(hwnd, &rect);// 使用Qt截圖窗口QImage screenImage = QGuiApplication::primaryScreen()->grabWindow((WId)hwnd).toImage();return screenImage;
}void CJSAutoWidget::SlotCaptureImage()
{m_pTimer->stop();QImage image = GetDNFImage();if (image.isNull()) {return;}QImage qImageMain = image.scaled(ui->label_Map->size(), Qt::KeepAspectRatio);ui->label_Main->setPixmap(QPixmap::fromImage(qImageMain));//裁剪地圖int x = image.width() - 125;int y = 40;int width = 120;int height = 70; QImage imageMap = image.copy(x, y, width, height);ui->label_Map->setPixmap(QPixmap::fromImage(imageMap.scaled(ui->label_Map->size(), Qt::KeepAspectRatio)));cv::Mat matMap = QImageToMat(imageMap);GetHouseNo(matMap);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896007.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896007.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896007.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TiDB 是一個分布式 NewSQL 數據庫

TiDB 是一個分布式 NewSQL 數據庫。它支持水平彈性擴展、ACID 事務、標準 SQL、MySQL 語法和 MySQL 協議&#xff0c;具有數據強一致的高可用特性&#xff0c;是一個不僅適合 OLTP 場景還適合 OLAP 場景的混合數據庫。 TiDB是 PingCAP公司自主設計、研發的開源分布式關系型數據…

請解釋 Vue 中的生命周期鉤子,不同階段觸發的鉤子函數及其用途是什么?

vue生命周期鉤子詳解&#xff08;Vue 3版本&#xff09; 一、生命周期階段劃分 Vue組件的生命周期可分為四大階段&#xff0c;每個階段對應特定鉤子函數&#xff1a; 創建階段&#xff1a;初始化實例并準備數據掛載階段&#xff1a;將虛擬DOM渲染為真實DOM更新階段&#xff…

計算機專業知識【深入理解子網中的特殊地址:為何 192.168.0.1 和 192.168.0.255 不能隨意分配】

在計算機網絡的世界里&#xff0c;IP 地址是設備進行通信的關鍵標識。對于常見的子網&#xff0c;如 192.168.0.0/24&#xff0c;我們可能會疑惑為何某些地址不能分配給主機使用。接下來&#xff0c;我們就以 192.168.0.0/24 為例&#xff0c;詳細解釋為何 192.168.0.1 和 192.…

軟件架構設計:軟件工程

一、軟件工程概述 軟件工程的定義 軟件工程是應用系統化、規范化、可量化的方法開發、運行和維護軟件。 軟件工程的目標 提高軟件質量、降低開發成本、縮短開發周期。 軟件生命周期 瀑布模型&#xff1a;需求分析→設計→編碼→測試→維護。迭代模型&#xff1a;分階段迭代開…

mysql 學習15 SQL優化,插入數據優化,主鍵優化,order by優化,group by 優化,limit 優化,count 優化,update 優化

插入數據優化&#xff0c; insert 優化&#xff0c; 批量插入&#xff08;一次不超過1000條&#xff09; 手動提交事務 主鍵順序插入 load 從本地一次插入大批量數據&#xff0c; 登陸時 mysql --local-infile -u root -p load data local infile /root/sql1.log into table tb…

達夢數據庫針對慢SQL,收集統計信息清除執行計劃緩存

前言&#xff1a;若遇到以下場景&#xff0c;大概率是SQL走錯了執行計劃&#xff1a; 1、一條SQL在頁面上查詢特別慢&#xff0c;但拿到數據庫終端執行特別快 2、一條SQL在某種檢索條件下查詢特別慢&#xff0c;但拿到數據庫終端執行特別快 此時&#xff0c;可以嘗試按照下述步…

使用JWT實現微服務鑒權

目錄 一、微服務鑒權 1、思路分析 2、系統微服務簽發token 3、網關過濾器驗證token 4、測試鑒權功能 前言&#xff1a; 隨著微服務架構的廣泛應用&#xff0c;服務間的鑒權與安全通信成為系統設計的核心挑戰之一。傳統的集中式會話管理在分布式場景下面臨性能瓶頸和擴展性…

廣西壯族自治區園區投促中心黨委書記陶德文率團到訪深蘭科技

2月16日&#xff0c;廣西壯族自治區園區投促中心黨委書記、主任&#xff0c;自治區園區辦黨組成員陶德文率團來到深蘭科技集團上海總部考察調研&#xff0c;并與深蘭科技集團創始人、董事長陳海波等集團管理層座談交流&#xff0c;雙方圍繞深蘭科技人工智能項目落地廣西的相關事…

基于UnrealEngine(UE5)的太空探索

視頻部分可參見&#xff1a;https://www.bilibili.com/video/BV1JWA8eSEVg/ 中國 天宮號 空間站 人造衛星可視化 星鏈衛星可視化 小行星分布及運動軌跡可視化 月球基地 可視化 八大行星軌道 太陽系宜居帶可視化 阿波羅8號拍攝的地球升起 谷神星模型及軌跡可視化 星座可視化 十…

WLAN無線2.4G/5G頻段劃分和可用信道

互聯網各領域資料分享專區(不定期更新)&#xff1a; Sheet

使用 OpenTelemetry 和 Langtrace 的 Elastic 分發跟蹤基于 RAG 的聊天機器人

作者&#xff1a;來自 Elastic Bahubali Shetti 如何使用 Elastic 觀察基于 OpenAI RAG 的應用程序。使用 Langtrace 對應用程序進行檢測&#xff0c;收集日志、跟蹤、指標&#xff0c;并了解 LLM 在 Kubernetes 上使用 OpenTelemetry 的 Elastic Distributions 的運行情況。 目…

基于機器學習的水文數據采集預測與可視化分析系統

【機器學習】基于機器學習的水文數據采集預測與可視化分析系統&#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 系統采用Python及Flask框架構建Web服務端&#xff0c;結合PyMySQL與MySQL實現數據…

三甲醫院網絡架構與安全建設實戰

一、設計目標 實現醫療業務網/衛生專網/互聯網三網隔離 滿足等保2.0三級合規要求 保障PACS影像系統低時延傳輸 實現醫療物聯網統一接入管控 二、全網拓撲架構 三、網絡分區與安全設計 IP/VLAN規劃表 核心業務配置&#xff08;華為CE6865&#xff09; interface 100G…

MySQL如何解決幻讀?

目錄 一、什么是幻讀&#xff1f; 1.1 幻讀的定義 1.2 幻讀的示例 1.3 幻讀產生的原因&#xff1f; 1.4?讀已提交&#xff08;Read Committed&#xff09; 1.4.1 確定事務等級 1.4.2 非鎖定讀取 準備 示例 結論 1.4.3 鎖定讀取 準備 示例 分析 結論 1.5?可重…

Openssl之SM2加解密命令

### 1. 生成 SM2 私鑰openssl genpkey -algorithm EC \-pkeyopt ec_paramgen_curve:sm2 \-out sm2_private_key.pem### 2. 從私鑰導出 SM2 公鑰openssl pkey -in sm2_private_key.pem \-pubout \-out sm2_public_key.pem### 3. 使用 SM2 公鑰加密openssl pkeyutl -encrypt \-pu…

【含文檔+PPT+源碼】基于Python的圖書推薦系統的設計與實現

課程簡介&#xff1a; 本課程演示的是一款基于python的圖書推薦系統的設計與實現&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Python學習者。 1.包含&#xff1a;項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行…

Nginx 安裝及配置教程(Windows)【安裝】

文章目錄 一、 Nginx 下載 1. 官網下載2. 其它渠道 二、 Nginx 安裝三、 配置四、 驗證五、 其它問題 1. 常用命令2. 跨域問題 軟件 / 環境安裝及配置目錄 一、 Nginx 下載 1. 官網下載 安裝地址&#xff1a;https://nginx.org/en/download.html 打開瀏覽器輸入網址 htt…

Spring Boot(8)深入理解 @Autowired 注解:使用場景與實戰示例

搞個引言 在 Spring 框架的開發中&#xff0c;依賴注入&#xff08;Dependency Injection&#xff0c;簡稱 DI&#xff09;是它的一個核心特性&#xff0c;它能夠讓代碼更加模塊化、可測試&#xff0c;并且易于維護。而 Autowired 注解作為 Spring 實現依賴注入的關鍵工具&…

DeepSeek教unity------Dotween

1、命名法 Tweener&#xff08;補間器&#xff09;&#xff1a;一種控制某個值并對其進行動畫處理的補間。 Sequence&#xff08;序列&#xff09;&#xff1a;一種特殊的補間&#xff0c;它不直接控制某個值&#xff0c;而是控制其他補間并將它們作為一個組進行動畫處理。 Tw…