我正在使用MSS捕捉我的屏幕截图。 (因为它可以捕获更快的屏幕截图)
但我不知道如何在Mac中捕获特定的窗口,我知道他们有针对Windows用户的win32。。。 他们的代码,我现在只是一个不断循环捕捉我的主显示器
main.py:
import cv2 as cv
import numpy as np
from time import time
from mss import mss
def window_capture():
loop_time = time()
with mss() as sct:
monitor = {"top": 40, "left": 0, "width": 800, "height": 600}
while(True):
screenshot = np.array(sct.grab(monitor))
screenshot = cv.cvtColor(screenshot, cv.COLOR_RGB2BGR)
cv.imshow('Computer Vision', screenshot)
print('FPS {}'.format(1 / (time() - loop_time)))
loop_time = time()
if cv.waitKey(1) == ord('q'):
cv.destroyAllWindows()
break
window_capture()
print('Done.')
如果要打开Chrome浏览器,则可以使用Python内置包webbrowser。您需要提供Chrome应用程序的路径,例如:
webbrowser.get('open -a /Applications/Google\ Chrome.app %s').open('http://docs.python.org/')
一旦浏览器打开,应用程序的位置将是它停止的位置。MSS不允许您选择应用程序。相反,您可以获取整个屏幕或设置的位置(如您指定的
monitor = {"top": 40, "left": 0, "width": 800, "height": 600}
)。因此,您可能希望强制浏览器全屏显示。这可以通过使用pyautogui包输入热键来实现(注意:我只在Windows上测试过这一点,但在MacOS上应该可以工作)
我写了下面一段
ObjectiveC
,它获取macOS中所有窗口的名称、所有者、窗口id和屏幕位置。我将其保存为windowlist.m
,并使用文件顶部注释中的命令进行编译:它给出如下输出,其中每行的最后4项是窗口左上角、高度和宽度。您可以使用Python的
subprocess.Popen()
按原样运行此程序,并获取窗口列表,也可以使用PyObjc
Python模块将其转换为Python:相关问题 更多 >
编程相关推荐