Python獲取鼠標位置:製作簡單實用的鼠標追蹤工具

介紹

隨着計算機應用領域的不斷擴大,人機交互也變得越來越重要。而獲取鼠標位置是人機交互中常用的功能之一。本文將介紹如何使用Python獲取鼠標位置,並製作簡單實用的鼠標追蹤工具。

正文

一、使用PyAutoGUI庫獲取鼠標位置

為了獲取鼠標位置,我們可以使用Python提供的第三方庫PyAutoGUI。這個庫能夠方便地控制鼠標、鍵盤等設備,並且支持跨平台(Windows、Mac和Linux)。

import pyautogui
 
print(pyautogui.position())

這段代碼可以獲取當前鼠標的位置,並在屏幕上打印出來。如果需要不斷追蹤鼠標位置,可以使用循環語句。

二、使用OpenCV庫實現鼠標追蹤

如果需要實現鼠標追蹤的功能,可以使用OpenCV庫。它是一個專門用於計算機視覺的庫,常用於圖像處理和分析。

import cv2
import pyautogui
 
cap = cv2.VideoCapture(0)
 
while (1):
    ret, frame = cap.read()
    frame = cv2.flip(frame, 1)
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
 
    lower_blue = np.array([110,50,50])
    upper_blue = np.array([130,255,255])
 
    mask = cv2.inRange(hsv, lower_blue, upper_blue)
    res = cv2.bitwise_and(frame,frame, mask= mask)
 
    contours,hierarchy = cv2.findContours(mask, 1, 2)
 
    if len(contours)>0:
        M = cv2.moments(contours[0])
        cx = int(M['m10']/M['m00'])
        cy = int(M['m01']/M['m00'])
        pyautogui.moveTo(cx,cy)
 
    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break
 
cv2.destroyAllWindows()
cap.release()

這段代碼可以打開攝像頭,將當前畫面轉化為HSV色彩空間,提取出藍色區域的掩模,通過查找輪廓獲取藍色區域中心的坐標,並將鼠標移動到該位置。同時,還可以在屏幕上顯示實時畫面、藍色區域的掩模以及提取出藍色區域的圖像。

三、製作簡單實用的鼠標追蹤工具

我們可以將上面的代碼封裝為一個鼠標追蹤工具,並添加一些簡單的交互功能。下面是一份示例代碼:

import cv2
import pyautogui
 
class MouseTracker:
    def __init__(self):
        self.cap = cv2.VideoCapture(0)
        self.lower_blue = np.array([110,50,50])
        self.upper_blue = np.array([130,255,255])
 
    def run(self):
        while (1):
            ret, frame = self.cap.read()
            frame = cv2.flip(frame, 1)
            hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
 
            mask = cv2.inRange(hsv, self.lower_blue, self.upper_blue)
            contours,hierarchy = cv2.findContours(mask, 1, 2)
 
            if len(contours)>0:
                M = cv2.moments(contours[0])
                cx = int(M['m10']/M['m00'])
                cy = int(M['m01']/M['m00'])
                pyautogui.moveTo(cx,cy)
 
            cv2.imshow('frame',frame)
            cv2.imshow('mask',mask)
            k = cv2.waitKey(5) & 0xFF
            if k == 27:
                break
            elif k == ord('b'):
                self.start_tracking()
            elif k == ord('q'):
                self.stop_tracking()
 
        cv2.destroyAllWindows()
        self.cap.release()
 
    def start_tracking(self):
        self.lower_blue = np.array([110,50,50])
        self.upper_blue = np.array([130,255,255])
 
    def stop_tracking(self):
        self.lower_blue = np.array([0,0,0])
        self.upper_blue = np.array([0,0,0])
 
if __name__ == '__main__':
    tracker = MouseTracker()
    tracker.run()

這個工具可以通過“b”鍵開始追蹤鼠標,通過“q”鍵停止追蹤鼠標。在停止追蹤鼠標時,將閾值範圍設置為0,表示不再識別任何顏色。這樣,工具就可以靈活地應對不同的使用場景。

小結

通過上面的介紹,我們學習了如何使用Python獲取鼠標位置,並且製作了一個簡單實用的鼠標追蹤工具。當然,這只是冰山一角,Python在人機交互領域還有很多其他有趣的應用。

原創文章,作者:OQIU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/149821.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OQIU的頭像OQIU
上一篇 2024-11-05 16:54
下一篇 2024-11-05 16:54

相關推薦

  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的“畫筆”在窗口中繪製…

    編程 2025-04-29
  • 如何通過jstack工具列出假死的java進程

    假死的java進程是指在運行過程中出現了某些問題導致進程停止響應,此時無法通過正常的方式關閉或者重啟該進程。在這種情況下,我們可以藉助jstack工具來獲取該進程的進程號和線程號,…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • 從不同位置觀察同一個物體,看到的圖形一定不同

    無論是在平時的生活中,還是在科學研究中,都會涉及到觀察物體的問題。而我們不僅要觀察物體本身,還需要考慮觀察的位置對觀察結果的影響。從不同位置觀察同一個物體,看到的圖形一定不同。接下…

    編程 2025-04-28
  • Python在哪裡找stystem 32的位置

    Python是一種流行的編程語言,它被廣泛用於各種應用程序的開發。但是在使用Python編寫應用程序時,有時需要查找stystem 32的位置。本文將詳細闡述Python在哪裡找s…

    編程 2025-04-28
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28

發表回復

登錄後才能評論