Python 2.7 python opencv滑动窗口问题

Python 2.7 python opencv滑动窗口问题,python-2.7,opencv,numpy,Python 2.7,Opencv,Numpy,我使用滑动/滚动窗口技术将输入图像分割成给定大小的相等块,因此我使用以下函数将图像分割成指定的窗口大小 def rolling_window(base_cord,test_image, window): """Very basic multi dimensional rolling window. window should be the shape of of the desired subarrays. Window is either a scalar or a tuple

我使用滑动/滚动窗口技术将输入图像分割成给定大小的相等块,因此我使用以下函数将图像分割成指定的窗口大小

def rolling_window(base_cord,test_image, window):
    """Very basic multi dimensional rolling window. window should be the shape of
    of the desired subarrays. Window is either a scalar or a tuple of same size
    as `arr.shape`.
    """
    windowsize_r = window[0]
    windowsize_c = window[1]
    chunk_arr = {}
    for r in range(0, test_image.shape[0] - windowsize_r, windowsize_r):
        for c in range(0, test_image.shape[1] - windowsize_c, windowsize_c):
            win = test_image[r:r + windowsize_r, c:c + windowsize_c]
            cord = (r+base_cord[0], c+base_cord[1])
            chunk_arr[cord] = win
    return chunk_arr
所以,这个函数返回指定大小的窗口 50x50及其字典格式的基本Cordinate

但问题是,假设我向下传递任何奇数大小的图像(如968x885),然后拆分大小为50x50的等长块将在图像末尾留下一些奇数边界像素,第一轮滑动窗口后的结果图像如下所示

正如我们在上面看到的,右侧的像素没有被分块到窗口中,因为它的窗口大小小于50x50

def rolling_window(base_cord,test_image, window):
    """Very basic multi dimensional rolling window. window should be the shape of
    of the desired subarrays. Window is either a scalar or a tuple of same size
    as `arr.shape`.
    """
    windowsize_r = window[0]
    windowsize_c = window[1]
    chunk_arr = {}
    for r in range(0, test_image.shape[0] - windowsize_r, windowsize_r):
        for c in range(0, test_image.shape[1] - windowsize_c, windowsize_c):
            win = test_image[r:r + windowsize_r, c:c + windowsize_c]
            cord = (r+base_cord[0], c+base_cord[1])
            chunk_arr[cord] = win
    return chunk_arr
所以我想要的是修改rolling_window函数,以便为每个可能的行/列中的剩余像素形成单独的窗口块。那么如何做到这一点呢


任何帮助都将不胜感激

for
循环中的
test\u image.shape[0]-windowsize\u r
更改为
test\u image.shape[0]
可以正常工作,但请记住,现在您将得到索引越界问题,需要使用
max(r,test\u image.shape[0]-1)解决该问题
在裁剪您的响应之前,我尝试了您的解决方案,效果很好,但处理整个图像需要很长时间,因为我在同一图像上执行了4轮操作,我在滑动窗口背后的主要座右铭是使我的算法时间高效,目前需要适当的时间。8秒。要在4轮中处理整个图像,但根据您的解决方案,它甚至需要超过100秒。时间太长了,就时间复杂性而言,我需要有效的解决方案。嗨,在责怪我增加了时间之前,你必须明白我到底说了什么。我没有做过任何会使时间增加那么多的激烈的事情。问题在于您当前的实现。简单地说,我只是将xrange(5)中I的
更改为xrange(6)中I的