Python Numpy图像处理:子矩阵提取

Python Numpy图像处理:子矩阵提取,python,arrays,numpy,image-processing,region,Python,Arrays,Numpy,Image Processing,Region,我有500张尺寸为800x600的图像,所以在一个成批的numpy数组中,我得到的形状是(500800600)。我将其重塑为(500800*600)以进行展平,因此我得到了一个形状数组(500480000) 假设我想对图像的子区域进行处理。我可以很容易地从一张图像中提取出一个100x100像素的子区域,比如说第一张,通过array[0][0:100*100]获取array[0][0:10000]…但是我如何在整批图像中做到这一点呢 当我试图array[0:50][0:100*100]获取前50张

我有500张尺寸为800x600的图像,所以在一个成批的numpy数组中,我得到的形状是
(500800600)
。我将其重塑为
(500800*600)
以进行展平,因此我得到了一个形状数组
(500480000)

假设我想对图像的子区域进行处理。我可以很容易地从一张图像中提取出一个100x100像素的子区域,比如说第一张,通过
array[0][0:100*100]
获取
array[0][0:10000]
…但是我如何在整批图像中做到这一点呢

当我试图
array[0:50][0:100*100]
获取前50张图片的子区域时,我总是得到错误的结果

array[0][0:10000]
对于单个图像的子区域,其正确形状为
(10000,)


array[0:50][0:100*100]
对于一批50幅图像,它的形状是
(50480000)
而不是
(5010000)
我真正想要的是一次得到50幅图像的第一个子区域。

如果你不先展平它,它将是
a[:50,:100,:100]
。我已经删除了我的答案:while
array[:50,:10000]
如果你想用
数组[0:50][0:100*100]
达到你想要的效果,我想你最好不要重塑数组,而是使用二战建议的切片
a[:50,:100,:100]
。这两个切片返回不同的元素,后者似乎是对“区域”一词的更好解释。您试图从每个单独图像中提取的是左上角100x100窗口中的像素,还是仅从每个展平图像中提取的前10000个像素?。从每个单独图像中提取的左上角100x100窗口等等,因此,你的建议是最好的,正确的,不需要先把它压扁。你可以创建一个答案,我接受(:对于在'20年阅读此内容的任何人。从每个批次中提取不同图像范围的最快方法是什么?是否有一种没有for循环的方法?例如:第一个图像a[0,:100,:100],第二个图像b[1100:150,120:160]。如果你不首先展平它,它将是
a[:50,:100,:100]
。我已经删除了我的答案:虽然
数组[:50,:10000]
可以实现您试图通过
数组[0:50][0:100*100]
实现的目标,但我怀疑您最好不要重塑数组,而是使用切片
a[:50,:100,:100]
由二战提出。这两个切片返回不同的元素,后者似乎是对“区域”一词的更好解释。您试图提取什么?从每个单独图像的左上角100x100窗口中提取像素,还是仅从每个展平图像中提取前10000个像素?。从每个图像中提取左上角100x100窗口,依此类推单个图像,因此您的建议最好且正确,无需首先将其展平。您可以创建一个答案,我接受(:20年阅读此内容的任何人。从每个批次中提取不同图像范围的最快方法是什么?是否有无for循环的方法?例如:第一个图像a[0,:100,:100],第二个图像b[1100:150,120:160]。