代码拉取完成,页面将自动刷新
给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:
四周最外侧的像素点灰度值不变;
中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。
第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。
4 5
100 0 100 0 50
50 100 200 0 0
50 50 100 100 200
100 100 50 50 100
100 0 100 0 50
50 80 100 60 0
50 80 100 90 200
100 100 50 50 100
8167
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int a[100][100], b[100][100], n, m; //a为原始数组,b为新数组
// 读入原始数组
cin >> n >>m;
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
cin >> a[i][j];
// 将边缘像素拷贝到新数组
for (int i=0;i<n;i++)
{
b[i][0]=a[i][0];
b[i][m-1]=a[i][m-1];
}
for (int j=0;j<m;j++)
{
b[0][j]=a[0][j];
b[n-1][j]=a[n-1][j];
}
// 计算新数组
for (int i=1;i<n-1;i++)
for (int j=1;j<m-1;j++)
{
b[i][j]=(int)((a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5.0+0.5); //四舍五入的写法
}
// 输出
for (int i=0;i<n;i++)
{
for (int j=0;j<m-1;j++)
printf("%d ", b[i][j]);
printf("%d\n", b[i][m-1]);
}
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。