【问题标题】:how to efficiently divide a large image to several parts and rotate them?如何有效地将大图像分成几个部分并旋转它们?
【发布时间】:2019-06-18 07:14:38
【问题描述】:

鉴于大局,以下需要大量时间:

1 将图像切割成4个形状均匀的图像(将图像水平分割一次,垂直分割一次):

2 按以下方式旋转 4 个部分:

3 concat(因此它可以作为神经网络的输入,以 4 张图像的形式运行)

我尝试过的(图片是正方形的:

image_A = image_np[: int(size / 2), :, :]
image_B = cv2.flip(image_np[int(size / 2):, :, :], -1)
image_C = cv2.rotate(image_np[:, :int(size / 2), :], cv2.ROTATE_90_CLOCKWISE)
image_D = cv2.rotate(image_np[:, int(size / 2):, :], cv2.ROTATE_90_COUNTERCLOCKWISE)

所以我想知道是否有更快的方法,因为图像/部分是一个 numpy 数组。

【问题讨论】:

  • 我不清楚你的形象,你从什么开始,你以什么结束。你能澄清一下吗?
  • 您的代码是否为您提供了预期的输出?
  • @BlueRineS 添加了澄清,如果现在清楚请告诉我
  • 首先,只有原始宽度等于高度的情况下才能concat,对吧?
  • @BlueRineS 所有部分都是形状(大小/2,大小)[原始图像是形状(大小/2,大小/2),所以我可以连接它们

标签: python image numpy


【解决方案1】:

我们可以简单地通过数组切片获得几乎免费的运行时视图,就像这样 -

B = image_np[-1:int(size / 2)-1:-1, ::-1, :]
C = image_np[::-1, :int(size / 2),:].swapaxes(0,1)
D = image_np[:, -1:int(size / 2)-1:-1, :].swapaxes(0,1)

image_A = image_np[: int(size / 2), :, :] 已经看起来像一个视图,因此不需要更改该视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多