• 6:图像模糊处理(水题)


    点击打开链接


    描述

    给定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









































    提交了好几次一直WA,看了别人的代码后也不知道是哪错了,估计是舍入那里出错了



    AC代码

    #include<stdio.h>  
    #include<iostream>  
    using namespace std;  
    int main()  
    {  
        int m,n,i,j=0;  
        double sum=0;  
        double a[105][105];  
        double b[105][105];  
        cin>>m>>n;  
        for(i=1;i<=m;i++){  
            for(j=1;j<=n;j++){  
                cin>>a[i][j];  
                b[i][j]=a[i][j];  
            }  
        }  
        for(i=1;i<=m;i++){  
            for(j=1;j<=n;j++){  
                if(i!=1 && j!=1 && i!=m && j!=n){  
                    sum=(a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j+1]+a[i][j-1])/5;  
                    sum=int(sum+0.5);  
                    b[i][j]=sum;  
                }  
            }  
        }  
        for(i=1;i<=m;i++){  
            for(j=1;j<=n;j++){  
            cout<<b[i][j]<<" ";  
            if(j==n){  
               printf("
    ");  
            }  
            }  
        }     
        return 0;  
    }  


    WA代码


    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    int main()
    {
    	int n,m;
    	int sum=0;
    	double a[200][200];
    	double b[200][200];
    	scanf("%d%d",&n,&m);
    	for(int i=0; i<n; i++)
    	for(int j=0; j<m; j++)
    	{
    		cin>>a[i][j];
    		b[i][j]=a[i][j];
    	}
    	for(int i=0; i<n; i++)
    	for(int j=0; j<m; j++)
    	{
    		if(i!=0&&j!=0&&i!=n-1&&j!=m-1)
    		{
    			sum=(a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5;
    			sum=int(sum+0.5);
    			b[i][j]=sum;		
    		}	
    	
    	}	
    	for(int i=0; i<n; i++)
    	for(int j=0; j<m; j++)
    	{
    		cout<<b[i][j]<<" ";
    		if(j==n)
    		printf("
    ");
    	 } 
    	return 0;
    }










    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    男孩的眼泪
    清冷
    Java随笔
    Java随笔
    skip a transaction in goldengate(跳过一个事务OGG)
    Oracle性能问题一般排查方法
    Oracle GoldenGate(ogg)安装经验大汇总,采坑总结,绝对干货!
    ORACLE 11G 性能诊断优化之ASH实战分析详解
    Oracle SQL性能优化40条 | 收藏了!
    GoldenGate OGG ORACLE数据复制实施方案
  • 原文地址:https://www.cnblogs.com/h-hkai/p/7406492.html
Copyright © 2020-2023  润新知