【发布时间】:2017-06-22 09:03:20
【问题描述】:
我已经安装了 numPy、sciPy 等库。为此需要openCV吗?使用 Scikit-image 将解决目的吗? 可以使用 Matlab 将图像分割成块(例如,将 256x256 像素的图像分割成 4x4 像素的块然后转换为矩阵),但我想确保它是否可以使用 python 完成。
【问题讨论】:
我已经安装了 numPy、sciPy 等库。为此需要openCV吗?使用 Scikit-image 将解决目的吗? 可以使用 Matlab 将图像分割成块(例如,将 256x256 像素的图像分割成 4x4 像素的块然后转换为矩阵),但我想确保它是否可以使用 python 完成。
【问题讨论】:
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。我会将其编辑到帖子中。让我知道您遇到了什么问题。
n/m来计算块大小。当然,如果您的图像没有完全按照您的块大小划分,您必须弄清楚您想要做什么......您可以将它们附加到最后一个块以使其更大,或者在结束,或者忽略它们,或者你想做的任何事情。显然,这取决于你想用它们做什么。