slidingwindow、sliding_window的简介
sliding_window
参考文章:http://stackoverflow.com/a/6822761
slidingwindow
这是一个简单的小Python库,用于将一组窗口计算成一个较大的数据集,设计用于图像处理算法,该算法使用滑动窗口将处理分解为一系列较小的块。此外,还可以指定一组可选转换,以应用于每个窗口。
还包括用于计算窗口距离矩阵的功能,用于需要考虑窗口中每个像素(相对于其中心)的位置的用例,以及用于批处理窗口和合并应用于窗口的处理结果的功能。
对于在生成窗口边界后需要修改它们的用例,可以将窗口对象转换为(x,y,w,h)元组表示的矩形。还提供了转换矩形的功能(填充、裁剪、强制方形宽高比等)。
还提供了创建NumPy数组的功能,如果可用的系统内存不足,该功能将回退到使用内存映射临时文件作为下划线数组缓冲区,以及确定生成窗口时可以使用的最大方形窗口大小。
sliding_window的安装
pip install sliding_window
更新……
import slidingwindow as sw
import numpy as np
# Load our input image here
# data = load(...)
# Generate the set of windows, with a 256-pixel max window size and 50% overlap
windows = sw.generate(data, sw.DimOrder.HeightWidthChannel, 256, 0.5)
# Do stuff with the generated windows
for window in windows:
subset = data[ window.indices() ]
# ...
# Or, using some transformation functions
tranforms = [
lambda m: np.fliplr(m),
lambda m: np.flipud(m),
lambda m: np.rot90(m, k=1, axes=(0, 1)),
lambda m: np.rot90(m, k=3, axes=(0, 1))
]
windows = sw.generate(data, sw.DimOrder.HeightWidthChannel, 256, 0.5, tranforms)
for window in windows:
transformed = window.apply(data)
# ...
# Alternatively, if we want to modify each window
windows = sw.generate(data, sw.DimOrder.HeightWidthChannel, 256, 0.5)
for window in windows:
rect = window.getRect()
transformed = sw.padRectEqually(rect, 100, data.shape)
window.setRect(transformed)
# ...