我目前正在以这种方式裁剪图像:
self.crop = self.img[self.y_center - self.radius:self.y_center + self.radius,
self.x_center - self.radius:self.x_center + self.radius:, ]
其中 y_center 和 x_center 由点击定义,radius 是裁剪的大小。但是我反复遇到一个问题,即点击是在图像的极端一侧。在那种情况下,我如何在图像的另一侧扩展边?
基本上我不想在尺寸上妥协。
最佳答案
简单而愚蠢的 (r) 方式:
- 检查点周围的矩形是否超出图像范围
- 如果需要,将其移动相应数量的像素
- 对所有 4 个面重复
s&s 不是如何处理矩形大于整个图像的情况,但我们会看到......
# X,Y - size of the image - 1 (maximum possible values for x,y)
# x,y - click coordinates relative to the image
t=x+radius; if t>X: x-=t-X
t=y+radius; if t>Y: y-=t-Y
t=x-radius; if t<0: x-=t #t<0 so it's increased actually
t=y-radius; if t<0: y-=t
del t
crop = img[x-radius:min(x+radius,X), y-radius:min(y+radius,Y)]
使用 min
,我们处理矩形大于图像的情况。
我们从“高”侧检查,因为我们选择了调整顺序,以便最后一个将矩形停靠到“低”侧。
关于python - 如何裁剪图像,如果坐标不存在,则延伸另一侧,从而保持裁剪的大小相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36520393/