如何使用python从屏幕的给定区域获取快照?

如何使用python从屏幕的给定区域获取快照?,python,macos,opencv,ocr,Python,Macos,Opencv,Ocr,以下是我的想法: 1从屏幕上抓拍给定区域,如100100、80、60,并将结果保存为图像 2使用OpenCV python接口处理图像 首先了解python,想知道这是否是一个好的解决方案,具体来说,想知道如何使用python进行快照 谢谢,在苹果的CoreGraphics api中使用CGRectMake非常简单: 这允许您分别定义水平/垂直位置和宽度/高度 代码: 要使用,只需调用以下函数: screenshot(path, dpi=72, region=area) *dpi将设置图像输出

以下是我的想法: 1从屏幕上抓拍给定区域,如100100、80、60,并将结果保存为图像 2使用OpenCV python接口处理图像

首先了解python,想知道这是否是一个好的解决方案,具体来说,想知道如何使用python进行快照

谢谢,

在苹果的CoreGraphics api中使用CGRectMake非常简单:

这允许您分别定义水平/垂直位置和宽度/高度

代码:

要使用,只需调用以下函数:

screenshot(path, dpi=72, region=area)
*dpi将设置图像输出分辨率;省略全屏捕获的region参数。关于OpenCV部分,我现在没有经常使用它来提供任何东西

#!/usr/bin/python

import Quartz
import LaunchServices
from Cocoa import NSURL
import Quartz.CoreGraphics as CG

def screenshot(path, dpi, region = None):

    if region is None:
        region = CG.CGRectInfinite

    image = CG.CGWindowListCreateImage(
        region,
        CG.kCGWindowListOptionOnScreenOnly,
        CG.kCGNullWindowID,
        CG.kCGWindowImageDefault)

    url = NSURL.fileURLWithPath_(path)

    dest = Quartz.CGImageDestinationCreateWithURL(
        url,
        LaunchServices.kUTTypePNG, 1, None
        )
    prop = {
        Quartz.kCGImagePropertyDPIWidth: dpi,
        Quartz.kCGImagePropertyDPIHeight: dpi,
        }

    Quartz.CGImageDestinationAddImage(dest, image, prop)
    Quartz.CGImageDestinationFinalize(dest)

spec = (0, 0, 800, 600) # x, y, w, h
path = '/path/to/screnshot_region.png' # save path
area = CG.CGRectMake(*spec) # set area to cgrect

screenshot(path, dpi=72, region=area) # call function
screenshot(path, dpi=72, region=area)