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

Python获取鼠标位置:制作简单实用的鼠标追踪工具随着计算机应用领域的不断扩大,人机交互也变得越来越重要。而获取鼠标位置是人机交互中常用的功能之一。本文将介绍如何使用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在人机交互领域还有很多其他有趣的应用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/21062.html

(0)
上一篇 2024-05-08
下一篇 2024-05-08

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注