【问题标题】:Splitting Very large images into overlapping boxes/blocks/tiles/sections, python, OpenCV将非常大的图像拆分为重叠的框/块/图块/部分,python,OpenCV
【发布时间】:2019-12-16 04:49:57
【问题描述】:

我有 10k x 10k 的非常大的图像,我需要将其拆分为重叠的框,如下所示。我希望框的大小为 X 乘 Y,我需要跨步(框在图像上移动的距离,以像素为单位)该框在屏幕上给定的距离。然后将每个单独的框部分保存为自己的图像文件。我希望能够更改 X 和 Y 值以及步幅值。我正在使用 Python 并拥有 OpenCV 谢谢。

【问题讨论】:

  • 到目前为止你尝试过什么?展示你的努力
  • 在 Google 或此论坛上搜索 numpy 切片以裁剪一个图块。您可能必须为您想要自己计算左上角偏移量以及固定宽度和高度值的每个图块在图像上编写一个循环。例如,使用crop_img = img[y:y+h, x:x+w] 参见stackoverflow.com/questions/15589517/… 的答案,然后将该磁贴写入磁盘

标签: python image opencv split


【解决方案1】:

这是一个函数,它从四面八方重叠分割图像。 在边框上,它将用零填充。

它的本质是:它创建一个具有零填充的更大图像,然后以window_size 的步幅提取大小为window_size+2*margin 的补丁。 (您可能需要根据需要进行调整)

def split(img, window_size, margin):

    sh = list(img.shape)
    sh[0], sh[1] = sh[0] + margin * 2, sh[1] + margin * 2
    img_ = np.zeros(shape=sh)
    img_[margin:-margin, margin:-margin] = img

    stride = window_size
    step = window_size + 2 * margin

    nrows, ncols = img.shape[0] // window_size, img.shape[1] // window_size
    splitted = []
    for i in range(nrows):
        for j in range(ncols):
            h_start = j*stride
            v_start = i*stride
            cropped = img_[v_start:v_start+step, h_start:h_start+step]
            splitted.append(cropped)
    return splitted

运行这个

img = np.arange(16).reshape(4,4)
out = split(img, window_size=2, margin=1)

会回来

[array([[ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  1.,  2.],
        [ 0.,  4.,  5.,  6.],
        [ 0.,  8.,  9., 10.]]),
 array([[ 0.,  0.,  0.,  0.],
        [ 1.,  2.,  3.,  0.],
        [ 5.,  6.,  7.,  0.],
        [ 9., 10., 11.,  0.]]),
 array([[ 0.,  4.,  5.,  6.],
        [ 0.,  8.,  9., 10.],
        [ 0., 12., 13., 14.],
        [ 0.,  0.,  0.,  0.]]),
 array([[ 5.,  6.,  7.,  0.],
        [ 9., 10., 11.,  0.],
        [13., 14., 15.,  0.],
        [ 0.,  0.,  0.,  0.]])]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多