使用Python實現手勢替代鼠標操作并生成.exe可執行文件

使用Python實現手勢替代鼠標操作并生成.exe可執行文件

在現代計算機交互中,手勢識別作為一種自然的人機交互方式,逐漸受到人們的關注。本文將介紹如何使用Python實現手勢替代鼠標操作,并生成一個可執行的.exe文件,使得這項技術更加易于分發和使用。

準備工作

首先,我們需要安裝必要的庫:

  • opencv-python
  • mediapipe
  • pyautogui
  • pyinstaller(用于生成可執行文件)

使用以下命令來安裝這些庫:

pip install opencv-python mediapipe pyautogui pyinstaller

實現手勢替代鼠標操作

下面我們將介紹如何通過Python實現手勢控制鼠標操作的代碼。

導入庫
import cv2
import mediapipe as mp
import pyautogui
初始化手部檢測模塊
mp_hands = mp.solutions.hands
hands = mp_hands.Hands(max_num_hands=1, min_detection_confidence=0.7, min_tracking_confidence=0.5)
mp_draw = mp.solutions.drawing_utils
攝像頭捕捉和手勢控制
cap = cv2.VideoCapture(0)
screen_width, screen_height = pyautogui.size()while cap.isOpened():ret, frame = cap.read()if not ret:breakframe = cv2.flip(frame, 1)rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)result = hands.process(rgb_frame)hand_landmarks = result.multi_hand_landmarksif hand_landmarks:for handLMs in hand_landmarks:mp_draw.draw_landmarks(frame, handLMs, mp_hands.HAND_CONNECTIONS)for id, lm in enumerate(handLMs.landmark):h, w, c = frame.shapecx, cy = int(lm.x * w), int(lm.y * h)if id == 8:  # 檢測食指尖端cursor_x = int(lm.x * screen_width)cursor_y = int(lm.y * screen_height)pyautogui.moveTo(cursor_x, cursor_y)if id == 4:  # 檢測拇指尖端thumb_x = int(lm.x * screen_width)thumb_y = int(lm.y * screen_height)# 檢測食指和拇指之間的距離distance = ((cursor_x - thumb_x)**2 + (cursor_y - thumb_y)**2)**0.5if distance < 40:  # 距離小于一定值,模擬鼠標點擊pyautogui.click()cv2.imshow('Hand Tracking', frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

生成.exe可執行文件

為了生成可執行文件,我們需要使用PyInstaller。首先,將上面的代碼保存為一個Python文件,例如hand_control.py

使用PyInstaller生成可執行文件

在終端或命令提示符中運行以下命令:

pyinstaller --onefile --noconsole hand_control.py
  • --onefile:將所有依賴打包到一個文件中。
  • --noconsole:隱藏控制臺窗口(可選)。

運行后,PyInstaller將在dist目錄中生成一個名為hand_control.exe的可執行文件。

代碼詳解

  1. 導入庫:引入OpenCV、Mediapipe和PyAutoGUI庫用于圖像處理、手勢檢測和模擬鼠標操作。
  2. 初始化手部檢測模塊:通過Mediapipe初始化手部檢測模型,設置檢測和跟蹤的置信度。
  3. 攝像頭捕捉和手勢控制:打開攝像頭讀取圖像,并通過Mediapipe檢測手勢,根據檢測到的手勢位置控制鼠標移動和點擊。
  4. 生成可執行文件:使用PyInstaller將Python腳本打包成可執行文件,方便分發和使用。

結論

本文詳細介紹了如何使用Python和OpenCV庫實現手勢替代鼠標操作,并通過PyInstaller生成一個可執行的.exe文件。這種方式不僅使得手勢識別技術更加實用,還方便了軟件的分發和使用。希望這篇文章對你有所幫助,需要獲取全部代碼或著更多的答疑可私信博主

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

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

相關文章

python常見概念

文章目錄 1.python是什么&#xff1f;2.編輯器的選擇——pycharm3.第一個python程序4.print函數5.關鍵字介紹6.python的注釋方式7.python語句分類 1.python是什么&#xff1f; Python 是一種面向對象的解釋性的計算機程序設計語言&#xff0c;也是一種功能強大而完善的通用型語…

濁度傳感器設備的監測控制和智慧運維

濁度傳感器是一種用于測量液體中懸浮顆粒濃度從而反映液體濁度的設備。 其工作原理主要基于以下幾種常見方式&#xff1a; 1. 散射光測量原理&#xff1a;當光線穿過含有懸浮顆粒的液體時&#xff0c;顆粒會使光線發生散射。傳感器通過測量特定角度的散射光強度來確定濁度。散…

數據中臺/數據倉庫必問的數量質量控制面試題

目錄 什么是數據質量?如何定義高質量的數據? 數據質量的五個維度是什么? 解釋“準確性”在數據質量中的含義。 數據清洗與數據質量控制之間的關系是什么? 數據質量評估的常用方法有哪些? 如何建立數據質量評分體系? 數據治理與數據質量控制的關系是什么? 描述一…

MySQL常用的函數

1、concat&#xff08;a&#xff0c;b&#xff09;&#xff1a;把傳入的參數連成一個字符串。 2、lower()/upper()&#xff1a;轉換為小寫/轉換為大寫。 3、replace&#xff08;&#xff09;&#xff1a;替換字符串。 4、trim&#xff08;&#xff09;&#xff1a;去掉開頭和…

入門 PyTorch ,這70個操作技巧就夠了

Pytorch 是當下最流行的算法框架&#xff0c;很多大模型都是基于Pytorch 搭建而成&#xff0c;它提供了大量操作用于創建和訓練神經網絡。 今天給大家分享 Pytorch 的19個方面&#xff0c;涉及到70個細節操作&#xff0c;這部分內容梳理花了我一天的時間&#xff0c;喜歡記得點…

騎馬與砍殺戰團mod制作-基礎-對話制作筆記(四)

騎馬與砍殺戰團mod制作-基礎-對話制作筆記&#xff08;四&#xff09; 資料來源 學習的資料來源&#xff1a; b站【三嘯解說】手把手教你做【騎砍】MOD&#xff0c;基礎篇&#xff0c;鏈接為&#xff1a; https://www.bilibili.com/video/BV19x411Q7No?p4&vd_sourcea507…

免費領!系統學習上位機編程的流程與基礎教程

上位機電氣自動化plc編程全套入門教程工具 華山編程導師根據當前招聘需求的關鍵點&#xff0c;原創錄制了一套系統的學習流程和基礎教程&#xff0c;幫助你從快速入門到掌握上位機編程的技能。 二. 學習準備 為了更好地學習并實現80%以上的代碼運行&#xff0c;建議準備一個工…

Android音頻系統

最近在做UAC的項目&#xff0c;大概就是接收內核UAC的事件&#xff0c;也就是聲音相關事件。然后就是pcm_read和AudioTrackr->write之間互傳。感覺略微有點奇怪&#xff0c;所以簡單總結一下。 1 UAC的簡要流程 open_netlink_socket 打開內核窗口&#xff0c;類似于ioctl。…

[leetcode]valid-triangle-number. 有效三角形的個數

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int triangleNumber(vector<int>& nums) {int n nums.size();sort(nums.begin(), nums.end());int ans 0;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {int left j 1, righ…

大模型RAG技術:構建高效、可信賴的知識檢索系統

前言 LLM 問題 幻覺&#xff1a;在沒有答案的情況下提供虛假信息。 過時&#xff1a;當用戶需要特定的當前響應時&#xff0c;提供過時或通用的信息。 來源&#xff1a;從非權威來源創建響應。由于術語混淆&#xff0c;不同的培訓來源使用相同的術語來談論不同的事情&#…

網絡構建和設計方法_1.網絡需求分析

1.網絡需求分析 網絡需求分析是網絡構建及開發過程的起始環節&#xff0c;也是極其重要的階段。在該階段&#xff0c;可盡早明確客戶使用網絡的真實用途或痛點&#xff0c;以便為后續能夠構建和設計出更貼近客戶真實訴求的網絡打下堅實基礎&#xff0c;前期的網絡需求分析至關…

制造業包括哪些?需要堡壘機嗎?

制造業-國民經濟的主體&#xff0c;是立國之本、興國之器、強國之基&#xff0c;一個關系著大家吃穿住行的行業&#xff0c;一個與大家息息相關的行業。但大家對于制造業還有很多不了解&#xff0c;有小伙伴在問&#xff0c;制造業包括哪些&#xff1f;需要堡壘機嗎&#xff1f…

深入探索npm依賴:掌握查看與管理包依賴的藝術

深入探索npm依賴&#xff1a;掌握查看與管理包依賴的藝術 在JavaScript和Node.js的世界中&#xff0c;npm&#xff08;Node Package Manager&#xff09;不僅是一個包管理器&#xff0c;更是一個強大的工具&#xff0c;用于管理項目依賴。理解并掌握如何查看和管理npm包的依賴…

k8s使用Endpoint將信息存儲到集群外部數據庫

https://mp.csdn.net/mp_blog/creation/editor/139864305 上一篇文章

引領AI新時代:深度學習與大模型的關鍵技術

文章目錄 &#x1f4d1;前言一、內容概述二、作者簡介三、書籍特色四、學習平臺與資源 &#x1f4d1;前言 在數字化浪潮席卷全球的今天&#xff0c;人工智能&#xff08;AI&#xff09;和深度學習技術已經滲透到我們生活的方方面面。從智能手機中的智能語音助手&#xff0c;到…

20.流入門

學習知識&#xff1a;輸入流和輸出流讀文件的簡單使用 test.txt&#xff1a; iloveu是我愛你的意思。 Main.java import java.io.*;public class Main {public static void main(String[] args) {// 1.利用輸入流讀文件//讀取test.txt并輸出文件內容try{FileInputStream in…

分類預測 | Matlab實現GA-XGBoost遺傳算法優化XGBoost的多特征分類預測

分類預測 | Matlab實現GA-XGBoost遺傳算法優化XGBoost的多特征分類預測 目錄 分類預測 | Matlab實現GA-XGBoost遺傳算法優化XGBoost的多特征分類預測效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 Matlab實現GA-XGBoost遺傳算法優化XGBoost的多特征分類預測&#xff0c;…

【Hadoop集群搭建】集群崩潰處理及啟動時常見報錯解決辦法

目錄 1. 集群崩潰處理 1.1 殺死進程 1.2 刪除目錄&#xff08;logs/和hadoopdata/&#xff09; 1.3 重新初始化集群 1.4 重新啟動集群 2. 啟動時常見報錯 2.1 報錯如下 2.2 在運行程序測試 MapReduce 計算框架時報錯如下 2.3 報錯如下 1. 集群崩潰處理 1.1 殺死進程 sbin/st…

Clickhouse的基本sql語句

1&#xff0c;建庫語句 create database if not exists mytestdb on cluster default_cluster;注意&#xff1a;用戶在集群中創建數據庫或者表時使用ON CLUSTER語句&#xff0c;保證各個ClickHouse節點上數據庫、表的元信息相同。 2&#xff0c;建表 -- 創建復制表 create t…

SpringBoot優點達項目實戰:項目基本配置(二)

SpringBoot優點達項目實戰&#xff1a;項目基本配置&#xff08;二&#xff09; 文章目錄 SpringBoot優點達項目實戰&#xff1a;項目基本配置&#xff08;二&#xff09;1、項目初始化配置2、MyBatisPlus配置3、Knife配置4、定義統一返回數據結構 1、項目初始化配置 創建appli…