首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mss和openCV捕获监听

使用mss和openCV捕获监听
EN

Stack Overflow用户
提问于 2020-07-02 11:22:30
回答 1查看 826关注 0票数 0

我正在尝试在openCV窗口中不断循环屏幕截图。

我需要的屏幕截图是快速的,我在Mac上,否则我会使用windowsGui应用程序接口。

我收到一个错误:

代码语言:javascript
复制
    Traceback (most recent call last):
  File "main.py", line 13, in <module>
    with mss as sct:
AttributeError: __enter__

当前代码:

代码语言:javascript
复制
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.')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-03 06:35:43

我找出了问题所在,抛出错误是因为我有两个with语句..

所以正确的代码应该是:

代码语言:javascript
复制
    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.')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62688453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档