我正在尝试在openCV窗口中不断循环屏幕截图。
我需要的屏幕截图是快速的,我在Mac上,否则我会使用windowsGui应用程序接口。
我收到一个错误:
Traceback (most recent call last):
File "main.py", line 13, in <module>
with mss as sct:
AttributeError: __enter__当前代码:
import cv2 as cv
import numpy as np
from time import time
from PIL import ImageGrab
from mss import mss
loop_time = time()
with mss() as sct:
monitor = {"top": 40, "left": 0, "width": 800, "height": 640}
while(True):
with mss as sct:
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
print('Done.')发布于 2020-07-03 06:35:43
我找出了问题所在,抛出错误是因为我有两个with语句..
所以正确的代码应该是:
loop_time = time()
with mss() as sct:
monitor = {"top": 40, "left": 0, "width": 800, "height": 640}
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
print('Done.')https://stackoverflow.com/questions/62688453
复制相似问题