这是一个围绕win32api、pyautogui和pynput的包装器。
RazbiUtils的Python项目详细描述
拉兹比乌提斯
这个包是win32api、pyautogui和pynput的包装器,用于截屏。在
pip install RazbiUtils
RazbiUtils至少支持python3.6,我只在^{str1}$windows上测试过。不能保证在linux上运行。在
API的设计类似于pyautogui,但它解决了pyautogui存在的许多问题。在
它解决的第一个问题是鼠标输入,通过在内部使用pynput进行鼠标单击和键盘键,这确保所有程序/游戏都将收到输入。这对chrome来说不是问题,但在其他许多随机程序中都是如此。在
第二个问题是点击速度和屏幕截图速度。单击速度再次由pynput确定,对于屏幕截图,我使用了franecklp使用win32api编写的内容[这里有一个指向屏幕截图来源的链接https://pythonprogramming.net/next-steps-python-plays-gta-v/]
我试图解决的第三个问题是使它适用于多个监视器,并使坐标系更容易,方法是让您指定屏幕的某些部分而不使用特定的坐标。我已经通过使用win32api检测监视器并组织它来解决这个问题。在
示例
基本模板检测
fromRazbiUtilsimportScreenScrapersc=ScreenScraper()path_to_template='object_to_detect'ifsc.find_on_screen_bool(path_to_template):print("Object Detected")
假设您有一个指向当前主屏幕上实际的.png的路径。脚本应该能够检测到它。 [对于管理模板图像,我强烈建议油漆.nethttps://www.dotpdn.com/downloads/pdn.html免费,使用方便,重量轻]
好吧,但让我们稍微有趣一点:让它点击找到的对象:
^{pr2}$Object Detected at Box(left=1590, top=951, width=189, height=54)
请注意,我使用found[0]
而不是仅仅使用found
,因为默认情况下,屏幕截图返回所有找到的对象的列表,[0]是第一个。
如果你不使用sc.中心(),您将只使用检测到的图像的左上角。在
假设您想截取第二台显示器上可见的内容,pyautogui通常无法做到这一点,但使用RazbiUtils,您只需:
fromRazbiUtilsimportScreenScraper,ScreenManagersc=ScreenScraper()path_to_template='object_to_detect'ifsc.find_on_screen_bool(path_to_template,ScreenManager.screens[1]):print("Object Detected")
屏幕的顺序基本上就是你在操作系统中设置的顺序。在
此外,如果您只想截图特定的部分,使屏幕截图快速而无实际坐标,您可以:
ScreenManager.screens[0].bottom_right
只在右下角。你也可以做ScreenManager.main_screen
,这与ScreenManager.screens[0]
相当
注意:如果您想以更短的形式引用ScreenManager,比如sm
任何应用程序的鼠标点击支持
我指的只是点击,鼠标移动肯定不起作用。
请记住,它在内部使用pynput
进行单击,因此如果您只想这样做,只需使用pynput
。在
在InputController.click{cd11}默认有一个参数。
这意味着点击之间的延迟是1/60,即0.016,这将保证它将注册的点击,如果应用程序是60fps。在
由于某些原因,pyautogui的点击在大多数游戏中都不起作用,所以可以使用这个库或者pynput
进行点击
支持
如果我还没用过的话,我会把所有的东西都加进去的。在
标签:
- 项目
推荐PyPI第三方库
假设您想截取第二台显示器上可见的内容,pyautogui通常无法做到这一点,但使用RazbiUtils,您只需:
fromRazbiUtilsimportScreenScraper,ScreenManagersc=ScreenScraper()path_to_template='object_to_detect'ifsc.find_on_screen_bool(path_to_template,ScreenManager.screens[1]):print("Object Detected")
屏幕的顺序基本上就是你在操作系统中设置的顺序。在
此外,如果您只想截图特定的部分,使屏幕截图快速而无实际坐标,您可以:
ScreenManager.screens[0].bottom_right
只在右下角。你也可以做ScreenManager.main_screen
,这与ScreenManager.screens[0]
相当
注意:如果您想以更短的形式引用ScreenManager,比如sm
任何应用程序的鼠标点击支持
我指的只是点击,鼠标移动肯定不起作用。
请记住,它在内部使用pynput
进行单击,因此如果您只想这样做,只需使用pynput
。在
在InputController.click{cd11}默认有一个参数。 这意味着点击之间的延迟是1/60,即0.016,这将保证它将注册的点击,如果应用程序是60fps。在
由于某些原因,pyautogui的点击在大多数游戏中都不起作用,所以可以使用这个库或者pynput
进行点击
支持
如果我还没用过的话,我会把所有的东西都加进去的。在
- 项目
标签: