1128:图像模糊处理(C C++)

【题目描述】

给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理: 1.四周最外侧的像素点灰度值不变; 2.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

【输入】

第一行包含两个整数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

【代码】

#include <iostream>
#include <cstdio>
using namespace std; 
int main() 
{
    
    
    int n,m,k;
    cin>>n>>m;
    double a[n][m],b[n][m];  
    //输入数组a 
	for(int i=0;i<n;i++)
	{
    
    
		for(int j=0;j<m;j++)
		{
    
    
			cin>>a[i][j];
			b[i][j]=a[i][j];//拷贝一份到数组b 
		}
	} 
	
	for(int i=1;i<n-1;i++) //内圈 
	{
    
    
		for(int j=1;j<m-1;j++)
		{
    
    
			b[i][j]=(a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1]+a[i][j])/5;  //平均值存入数组b 
		}
	}
	//输出数组b 
	for(int i=0;i<n;i++)
	{
    
    
		for(int j=0;j<m;j++)
		{
    
    
			printf("%.0lf ",b[i][j]);//四舍五入 
		}
		printf("\n");
	} 
}

猜你喜欢

转载自blog.csdn.net/weixin_50901683/article/details/109076379
今日推荐