图像使用python捕获屏幕的中心

时间:2017-10-08 10:04:48

标签: python opencv numpy python-imaging-library

如何使用python捕获屏幕的中心我尝试了这段代码,但每当我提高200以上参数的值时,它就会给我错误。

import numpy as np
from PIL import ImageGrab
import cv2

while(True):
    printscreen_pil =  ImageGrab.grab(bbox=(0,200,500,200))
    printscreen_numpy =   np.array(printscreen_pil.getdata(),dtype='uint8')\
    .reshape((printscreen_pil.size[1],printscreen_pil.size[0],3)) 
    cv2.imshow('window',printscreen_numpy)
    if cv2.waitKey(25) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break

1 个答案:

答案 0 :(得分:1)

这是一个漫无边际的事情。 你有两个具有相同价值的Y.目前,您的边界框为零像素高。即你有一条从(0,200)到(500,200)的线。 (如果它可以被称为一条线)。

将代码放入以下行:

print printscreen_pil.size

你会看到。

边界框用矩形的左上角和同一矩形的右下角描述。

所以,你的边界框应该是例如:

from PIL import ImageGrab
x1 = 0; y1 = 200
x2 = 500; y2 = 500
# If you want center of a screen then calculate them according to the screen's size.
img = ImageGrab.grab(bbox=(x1, y1, x2, y2))

屏幕尺寸,您可以直接从操作系统获取或首先获得整个屏幕,然后裁剪出您想要的区域。

img = ImageGrab.grab()
size = img.size
x1 = size[0]/2-100; y1= size[1]/2-100
x2 = x1+200; y2 = y1+200
portion = img.crop((x1, y1, x2, y2))