1

我想使用 python 在 OSX 上制作屏幕截图。我不想制作全屏照片,而只想制作屏幕上的某些矩形。类似于 (291,305,213,31)。我需要正确的像素,因为之后图像文件由 OCR(python-tesseract)处理以提取文本。

顺便说一句,这是我 6 年来第一次编程,到目前为止我只知道一点 Java。我昨天开始,今天凌晨 4 点放弃了。所以基本上我还没有任何线索......例如,由于路径设置,我仍然无法使用 Sublime 构建,但那是另一回事。一天都想不通。

我已经在尝试以下方法: - wxPython 但结果是黑色图像,另请参阅:stackoverflow.com/questions/8644908/take-screenshot-in-python-cross-platform 此外,它仅适用于 32 位模式,但当我使用 python-tesseract openCV 进行 OCR 需要 64 位 ....

  • autopy 尝试安装时出现错误,另请参阅:stackoverflow.com/questions/12993126/errors-while-installing-python-autopy

  • 仅限 ImageGrab Windows effbot.org/imagingbook/imagegrab.htm

  • 命令行 screencapture os.system('screencapture test.png') 当我发现这个时,我想,很好,但在检查 man screencapture 时只能全屏显示。但后来我发现了这个:guides.macrumors.com/screencapture -R capture screen rect 这已经足够了,但是在 OSX 10.7.5 上我没有这个选项。有任何想法吗?

  • 导入 Quartz.CoreGraphics neverfear.org/blog/view/156/OS_X_Screen_capture_from_Python_PyObjC

    将屏幕截图创建为 CGImage

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

不幸的是,图像不是文件格式,而是 CGImage,不知道如何保存为文件。

因此,如果可能的话,如果有人知道如何,我想使用带有 -R 的命令行屏幕截图。只是作为继续的开始。

还有其他可用的命令行工具吗?

我错过的其他库呢?

干杯 M

4

1 回答 1

0

鉴于您可以获得 a CGImageRef,您可以使用技术问答 QA1509:从 CGImage 对象获取像素数据中描述的技术获取其像素数据。特别是,它显示了CFDataRef使用此函数获取像素数据的函数:

CFDataRef CopyImagePixels(CGImageRef inImage) { return CGDataProviderCopyData(CGImageGetDataProvider(inImage)); }

并说:

CGDataProviderCopyData 返回的像素数据没有经过颜色匹配,并且是图像所在的格式,如各种 CGImageGet 函数所述……</p>

如果需要,它显示了以其他格式获取像素数据的替代方法。

于 2013-04-06T14:31:11.490 回答