The*_*ank 3 python numpy scikit-image
我有一个 numpy 数组 shape (12,224,224)。这是 12 张大小的图像(244, 244)。当我只有一张图片时,这很简单。图像的大小(x,y)。例如,x是一个 size 的图像(400,400),我可以这样使用view_as_blocks:
from skimage.util import view_as_blocks as vablks
xx = vablks(x, block_shape=(8,8))
Run Code Online (Sandbox Code Playgroud)
这将导致形状块(50,50,8,8)。现在我想知道当我有图像列表时如何应用它。要么我失去了形状,即我的 12 个图像被组合成一个 (224,224) 块,分解为(28,28,8,8),或者我遇到了 ValueError。这是我尝试用于迭代 12 张图像并查看(224,224)成形图像的代码
xx = []
for item_ in x:
xx.append(blockSplitter(item_))
Run Code Online (Sandbox Code Playgroud)
其中 x 是图像列表。
这是错误:
ValueError: 'block_shape' is not compatible with 'arr_in'
Run Code Online (Sandbox Code Playgroud)
总的来说,我想知道如何在不丢失图像的情况下以 8x8 块的形式查看图像。帮助,请和谢谢。
你至少有两个选择:
1)按照上述评论者的建议,将列表转换为数组。然后使用view_as_blocks正确的参数:
from skimage.util import view_as_blocks
images = [np.zeros((50, 50)) for i in range(10)]
images = np.array(images)
all_blocks = view_as_blocks(images, block_shape=(1, 10, 10)).squeeze()
Run Code Online (Sandbox Code Playgroud)
2) 将列表中的每一项转换为窗口视图,然后将最终结果转换为数组:
from skimage.util import view_as_blocks
images = [np.zeros((50, 50)) for i in range(10)]
image_blocks = [view_as_blocks(image, block_shape=(10, 10)) for image in images]
all_blocks = np.array(image_blocks)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2619 次 |
| 最近记录: |