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/n/149821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
OQIUOQIU
上一篇 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

发表回复

登录后才能评论