【问题标题】:Split Image using Skimage使用 Skimage 分割图像
【发布时间】:2020-07-18 14:10:36
【问题描述】:

我希望能够使用 skimage 将图像排在第四位。

我能找到的只是裁剪图像,但我想第四个,而不仅仅是裁剪部分。我需要第四个它才能与其他图像进行比较以获得对称性。

我该怎么办?

如果我找不到函数或拆分方法,我的一个思考过程是手动找到垂直线和水平线,然后使用这些值作为切片索引进行裁剪。

height, width = size(image)
vertical = height / 2
horizontal = width / 2

实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: python split scikit-image


    【解决方案1】:

    在 scikit-image 中,images are just NumPy arrays 所以你应该为此使用 NumPy 切片:

    from skimage import data
    import matplotlib.pyplot as plt
    
    image = data.camera()
    
    nrows, ncols = image.shape
    rsplit, csplit = nrows // 2, ncols // 2
    
    quadrants = [
        image[:rsplit, :csplit],
        image[:rsplit, csplit:],
        image[rsplit:, :csplit],
        image[rsplit:, csplit:],
    ]
    
    fig, axes = plt.subplots(2, 2)
    
    for quadrant, ax in zip(quadrants, axes.flat):
        ax.imshow(quadrant, cmap='gray')
        ax.set_axis_off()
    

    当且仅当您确定图像的行数和列数是偶数时,您可以得到带有skimage.util.view_as_blocks 的象限:

    from skimage.util import view_as_blocks
    
    quadrants = view_as_blocks(image, (rsplit, csplit)).reshape(
        (4, rsplit, csplit)
    )
    

    【讨论】:

    • 这是一个很好的答案。一个广义的解决方案(而不是象限,N 个子集)将是 +10000
    猜你喜欢
    • 2019-08-06
    • 2020-08-04
    • 2022-07-19
    • 1970-01-01
    • 2022-10-17
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    相关资源
    最近更新 更多