使用pyscreenshot的bbox参数时Python触发ValueError错误求助
问题
我想实现点击鼠标时保存全屏截图,然后提取鼠标位置处的文本(截图已能保存到文件夹),但运行代码时出现以下错误:
运行代码
im = pyscreenshot.grab(bbox=(on_click.px, on_click.py, on_click.rx, on_click.ry)) im.save('img.png')
错误回溯
Traceback (most recent call last): File "c:\Users\cww\Downloads\Typeracer Bot\typeracerbot.py", line 21, in <module> im = pyscreenshot.grab(bbox=(on_click.px, on_click.py, on_click.rx, on_click.ry)) File "C:\Users\cww\AppData\Local\Programs\Python\Python310\lib\site-packages\pyscreenshot\__init__.py", line 27, in grab raise ValueError("bbox x2<=x1") ValueError: bbox x2<=x1
解决方法
错误原因
pyscreenshot.grab()的bbox参数要求传入**(左上角x, 左上角y, 右下角x, 右下角y)**,且必须满足右下角x > 左上角x、右下角y > 左上角y。你遇到的错误是因为on_click.rx(右下角x)小于等于on_click.px(左上角x),不符合参数格式要求。
针对全屏截图的修复
既然需求是截全屏,完全不需要传bbox参数,默认调用就会截取整个屏幕:
im = pyscreenshot.grab() # 无需bbox,直接截全屏 im.save('img.png')
鼠标位置文本提取建议
如果要提取鼠标位置的文本,可先获取鼠标坐标,再从全屏截图中裁剪出鼠标周围的区域,最后用OCR工具提取文本,示例代码:
import pyautogui import pyscreenshot from PIL import Image import pytesseract # 截全屏 im = pyscreenshot.grab() im.save('full_screen.png') # 获取当前鼠标坐标 mouse_x, mouse_y = pyautogui.position() # 裁剪鼠标周围区域(可根据需求调整尺寸) crop_area = (mouse_x - 100, mouse_y - 50, mouse_x + 100, mouse_y + 50) cropped_im = im.crop(crop_area) cropped_im.save('mouse_area.png') # OCR提取文本 text = pytesseract.image_to_string(cropped_im) print(text)
内容的提问来源于stack exchange,提问作者iis3zT5iK3mGyJw
相关产品推荐
相关产品推荐

