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