我是新手。 我尝试使用mss截图监视器。 我的代码:
for i in range(1, 20000):
cactus_box = {'left': 508, 'top': 382, 'width': 30, 'height': 33}
sct = mss()
sct_img = sct.grab(cactus_box)
当我运行代码时,显示错误:
File "C:\Users\xxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\mss\windows.py", line 203, in grab
raise ScreenShotError('gdi32.GetDIBits() failed.', locals())
mss.exception.ScreenShotError: ('gdi32.GetDIBits() failed.', {'bits': 0, 'height': 33, 'width': 30, 'gdi': <WinDLL 'gdi32', handle 75f00000 at 0x93dd5f0>, 'monitor': {'left': 508, 'top': 382, 'width': 30, 'height': 33}, 'self': <mss.windows.MSS object at 0x093DD810>})
拜托,有人可以告诉我解决这个错误
答案 0 :(得分:0)
编辑:这是由于资源未被释放。它在MSS 4.0.0或更高版本中修复。
你能尝试使用for
循环的MSS吗?类似的东西:
with mss() as sct:
cactus_box = {'left': 508, 'top': 382, 'width': 30, 'height': 33}
for i in range(1, 20000):
sct_img = sct.grab(cactus_box)
错误消息不是很明确,但它告诉您屏幕截图不可能(没有检索到的位)。但我们无法知道原因。也许是内存错误。
另外,尝试打印i
以查看它是否会提前发现错误。