You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python检测鼠标绕圈行为并截取目标区域截图?

鼠标绕圈检测与截图实现

需求概述

我想要实现检测用户鼠标是否反复绕某一对象移动,满足持续绕圈至少5秒后截取该对象区域的截图。为简化实现,将需求拆分为两部分:

  • 检测鼠标绕圈行为:已有众多Python库可实现,但需确保鼠标持续绕圈至少5秒才触发截图,示例代码框架如下:
# import necessary libraries

def get_mouse_input():
    pass

def get_coordinates():
    pass

其中get_coordinates()用于获取鼠标绕圈的目标区域坐标,以便截取对应区域截图。

  • 截取截图:该步骤较为简单,使用截图模块并裁剪图像即可完成。

核心难点在于检测鼠标绕圈行为,只需关注鼠标坐标,无需在意绕圈区域的内容,但用户输入的不确定性使得判断鼠标轨迹是否为圆形或椭圆形难度较大。核心问题:这能否用Python实现?若可以,具体如何实现?这是一个趣味项目,欢迎各类建议。

进度更新1

我已实现获取鼠标输入的功能,但不知如何利用这些输入判断坐标是否符合椭圆或圆形轨迹。例如,通过以下代码获取了多组鼠标坐标:

import pyautogui
import time

while True:
    cordslist1 = []
    cordslist2 = []
    cordslist3 = []
    cordslist4 = []
    for i in range(4):
        cords1 = pyautogui.position()
        time.sleep(0.5)
        cords2 = pyautogui.position()
        time.sleep(0.5)
        cords3 = pyautogui.position()
        time.sleep(0.5)
        cords4 = pyautogui.position()
        for j in range(4):
            exec(f"cordslist{i + 1}.append(cords{j + 1})")
    cordslist = [cordslist1, cordslist2, cordslist3, cordslist4]
    # do something with cordslist

得到了庞大的cordslist列表,却不知如何处理。例如给定坐标(10, 4)、(100, 100)、(200, 200)、(7, 8),如何判断其是否为椭圆或圆形?同时如何截取对应区域截图?我仍陷入困境,希望借助math模块或基础循环等数学方法解决。

进度更新2

我已解决该问题,找到了一种比逐次检测坐标简单得多的Python库方案,效果完美。建议其他尝试该功能的开发者避免使用我最初的坐标检测思路。


内容的提问来源于stack exchange,提问作者5rod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:12:55