python - 如何裁剪图像,如果坐标不存在,则延伸另一侧,从而保持裁剪的大小相同?

标签 python image opencv numpy image-processing

我目前正在以这种方式裁剪图像:

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/

相关文章:

java - 简单的图像旋转

opencv - Cmake的CI2CV构建错误

python - 找到矩阵中元素的最长对角线-python

python - 特定行数的加载文本

python - aiohttp 与 asyncio 和信号量返回一个填充 None 的列表

javascript - 为什么这个按钮不能删除这个图像

用于信号处理的 Python 包

javascript - 将超链接从用户(文本)转换为图像

python - 在python(OpenCV)中查找对象的大小?

matlab - 如何使用 24 block 色卡估计和应用色彩校正矩阵?