从以位置 (x,y) 为中心的输入图像中提取 3×3 图像片段

Extract the 3×3image segment from the input image centred around the position (x,y)

我想问一下如何从以位置(x,y)为中心的输入图像中提取n×n图像片段,图像的格式如下[[num,num,num],[num, numm,num],[num,num,num]........],图片大小约为10 * 10,谢谢!

我真的推荐使用 numpy,在处理多维时 arrays/when 你想操作这些数组,但是现在,一个 numpy 解决方案和一个没有 numpy 的解决方案。

import numpy as np 

img = np.array([[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8],[5,6,7,8,9]])
print('img:\n',img,'\n')
partOfImage = img[0:3,0:3]
print('partOfImage:\n',partOfImage)

img = [[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8],[5,6,7,8,9]]
noNumpy =[[img[i][j] for j in range(0,3)] for i in range(0,3)]

print(noNumpy)

问题。因此,您希望找到图像的中心,向左、左下、下、右下、右、右上、上和左上扩展 1 个像素,以从样本中间获取图像。正确的?我没有代码示例,只有概念性评论。

固定空间图像通常从左上角开始寻址 0,0。由于它们的像素数接近偶数,因此几乎不可能找到“中间”。因此,找到一个“中间像素”意味着您需要应用一个百分比并选择最接近该选项的“整个像素”。然后扩展到您的 3x3 尺寸。