【问题标题】:How can I divide a nXn colored image into non-overlapping, equal sized blocks, using python 2.7.13? [duplicate]如何使用 python 2.7.13 将 nXn 彩色图像划分为不重叠、大小相等的块? [复制]
【发布时间】:2017-06-22 09:03:20
【问题描述】:

我已经安装了 numPy、sciPy 等库。为此需要openCV吗?使用 Scikit-image 将解决目的吗? 可以使用 Matlab 将图像分割成块(例如,将 256x256 像素的图像分割成 4x4 像素的块然后转换为矩阵),但我想确保它是否可以使用 python 完成。

【问题讨论】:

    标签: python opencv numpy


    【解决方案1】:

    Python(和numpy)的切片和索引让这一切变得简单。为此,您不需要 OpenCV 或 scikit-image(当然,您确实需要一些东西来读取图像)。

    >>> import numpy as np
    >>> image = np.random.rand(256,256) # random grayscale float image
    >>> blocks = np.array([image[i:i+4, j:j+4] for j in range(0,256,4) for i in range(0,256,4)])
    >>> blocks.shape
    (4096, 4, 4)
    
    >>> image = np.random.rand(256,256,3) # random 3-ch float image
    >>> blocks = np.array([image[i:i+4, j:j+4] for j in range(0,256,4) for i in range(0,256,4)])
    >>> blocks.shape
    (4096, 4, 4, 3)
    

    【讨论】:

    • 感谢您的帮助,但代码不起作用。
    • 你能说得更具体点吗?您应该确保首先拥有import numpy as np。我会将其编辑到帖子中。让我知道您遇到了什么问题。
    • 如果我想将任何 nXn 彩色图像分成 m 个块怎么办?
    • 那么你可以通过n/m来计算块大小。当然,如果您的图像没有完全按照您的块大小划分,您必须弄清楚您想要做什么......您可以将它们附加到最后一个块以使其更大,或者在结束,或者忽略它们,或者你想做的任何事情。显然,这取决于你想用它们做什么。
    • answers.opencv.org/question/53694/… 为我工作,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多