给定表示图像灰度的二维整数矩阵M,您需要设计一个更平滑的图像,使每个单元格的灰度级成为所有8个周围单元格及其自身的平均灰度级(舍入)。 如果一个细胞的周围细胞少于8个,则尽可能多地使用。
使用copy函数创建一个数组,再从[0][0]开始对数组元素重新填入。
from copy import deepcopy as copy
class Solution(object):
def imageSmoother(self,M):
x_len = len(M)
y_len = len(M[0]) if x_len else 0
res = copy(M)
for x in range(x_len):
for y in range(y_len):
neibors = [
M[_x][_y]
for _x in (x-1,x,x+1)
for _y in (y-1,y,y+1)
if 0 <= _x < x_len and 0 <= _y < y_len
]
res[x][y] = sum(neibors) // len(neibors)
return res