如何使用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
答案 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))