我正在创建一个画布,在上面画一个数字。然后我通过Pillow包制作了一张截图,并以某种方式裁剪它,只剩下绘制的数字。(目的是通过CNN预测抽取的数字(当裁剪Pillow函数imagegrab((.grab((.crop(…(完成的屏幕截图时,没有使用.crop中的给定坐标。出于测试目的,我试图通过给crop((一些坐标来手动选择屏幕截图中应该裁剪的部分。这样做时,如果我选择左上角,它会起作用,但当我将要裁剪的零件移到更右边或更低的位置时,它会变得更偏斜。在所附的图像中,您可以看到由所附代码执行的裁剪示例,其中只有要裁剪的画布的一部分被裁剪,此外还有一些背景
从屏幕截图中裁剪画布小部件一部分的代码:
def get_drawing():
widget = cv
x = root.winfo_rootx() + widget.winfo_x()
y = root.winfo_rooty() + widget.winfo_y()
x1 = x + widget.winfo_width()
y1 = y + widget.winfo_height()
ImageGrab.grab().crop((x, y, x1, y1)).save("test.png")
我也遇到了同样的问题,但在我的情况下,屏幕在窗口设置中被缩放到125%。将其更改为100%后,作物是正确的。
我刚刚找到了自己问题的答案:问题出在我选择显示画布的监视器上。我正在使用一个连接到带有外部显示器的扩展坞的Microsoft Surface。当我将显示设置更改为仅使用外部监视器时,裁剪将按预期使用上面的代码。当我使用Surface并使用外部监视器扩展显示时,裁剪会发生倾斜,如屏幕截图所示。