您的位置:

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在人机交互领域还有很多其他有趣的应用。

Python获取鼠标位置:制作简单实用的鼠标追踪工具

2023-05-10
Python控制鼠标

2023-05-19
autocad中特性无法用鼠标拖动,cad用鼠标拖动图形不动

2023-01-07
sw鼠标中键的设置,sw鼠标右键设置

2022-12-01
golang鼠标,golang 控制鼠标

本文目录一览: 1、csgo推荐鼠标 2、go浏览器有鼠标吗 3、golang从入门到精通,搭建本地selenium自动化测试环境 4、那种鼠标适合打csgo??? 5、csgo职业玩家鼠标参数怎么设

2023-12-08
Python模拟鼠标点击

2023-05-18
鼠标操作c语言,c++鼠标操作

2022-11-27
使用Python实现鼠标点击操作

2023-05-10
cad2010鼠标跳动太大,CAD鼠标乱跳

2022-11-26
cad里面的追踪怎么,autocad怎么追踪

2023-01-04
深入了解鼠标钩子

2023-05-20
c语言操作鼠标,c++鼠标操作

2022-11-29
让鼠标指针更易跟踪的CSS箭头

2023-05-12
Python应用:自定义手形鼠标光标

2023-05-13
cad鼠标不能一直,cad命令不跟着鼠标走

2022-11-27
Unity获取鼠标位置的多方面阐述

2023-05-21
c语言鼠标定位,鼠标的定位原理

2023-01-08
用js做鼠标代码,编程用鼠标

本文目录一览: 1、JS鼠标事件大全 JS鼠标事件有哪些 2、js代码 我有一段js代码 是鼠标单击实现复制的功能。但是我不会改 求大神 3、js怎么设置鼠标位置 4、怎么编程实现JS,鼠标事件 5、

2023-12-08
python画图笔记(python画图作业)

2022-11-10
java鼠标事件,java鼠标事件处理

2022-11-30