图像模糊(蓝桥杯真题)
图像模糊
题目描述:
小蓝有一张黑白图像,由n×m 个像素组成,其中从上到下共 n 行,每行从左到右 m 列。每个像素由一个 0 到 255 之间的灰度值表示。
现在,小蓝准备对图像进行模糊操作,操作的方法为:
对于每个像素,将以它为中心 3×3 区域内的所有像素(可能是 9 个像素或少于 9 个像素)求和后除以这个范围内的像素个数(取下整),得到的值就是模糊后的结果。
请注意每个像素都要用原图中的灰度值计算求和。
输入:
3 4
0 0 0 255
0 0 255 0
0 30 255 255
输出:
0 42 85 127
5 60 116 170
7 90 132 191
import os
import sys
a, b = list(map(int, input().split()))
p=[]
for i in range(1,a+1):
k = list(map(int, input().split()))
p.append(k)
new = [[0 for _ in range(b)] for _ in range(a)]
for i in range(a):
for j in range(b):
if i == 0 and j==0:
new[i][j] = int((p[i][j]+p[i][j+1]+p[i+1][j]+p[i+1][j+1])/4)
elif i == 0 and j==b-1:
new[i][j] = int((p[i][j] + p[i][j - 1] + p[i + 1][j] + p[i + 1][j - 1])/4)
elif i == a-1 and j==b-1:
new[i][j] = int((p[i][j] + p[i][j - 1] + p[i - 1][j] + p[i - 1][j - 1])/4)
elif i == a-1 and j==0:
new[i][j] = int((p[i][j] + p[i][j + 1] + p[i - 1][j] + p[i - 1][j + 1])/4)
elif i == 0:
new[i][j] = int((p[i][j] + p[i][j + 1] + p[i][j - 1] + p[i + 1][j-1] + p[i + 1][j + 1]+ p[i + 1][j])/6)
elif i == a-1:
new[i][j] = int((p[i][j] + p[i][j + 1] + p[i][j - 1] + p[i - 1][j-1] + p[i - 1][j + 1]+ p[i - 1][j])/6)
elif j == 0:
new[i][j] = int((p[i][j] + p[i-1][j ] + p[i+1][j] + p[i - 1][j+1] + p[i + 1][j + 1]+ p[i][j+1])/6)
elif j == b-1:
new[i][j] = int((p[i][j] + p[i-1][j ] + p[i+1][j] + p[i - 1][j-1] + p[i + 1][j - 1]+ p[i][j-1])/6)
else:
new[i][j] = int((p[i][j] + p[i][j-1] + p[i][j+1] + p[i - 1][j + 1] + p[i - 1][j - 1] +p[i - 1][j] +p[i + 1][j + 1]+p[i + 1][j]+p[i + 1][j - 1]) / 9)
for i in range(a):
for j in range(b):
print(new[i][j], end=' ')
print('\n', end='')
记录一下,连输入输出都不是很会,啊啊啊啊啊!