• 信息学奥赛一本通(c++):1128:图像模糊处理


    信息学奥赛一本通(c++):1128:图像模糊处理

    一、题目

    1128:图像模糊处理
    时间限制: 1000 ms         内存限制: 65536 KB

    【题目描述】

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

    二、思路

            1.定义一个新二维数组存放数据 在输入数据的时候同时初始化新数组的四周

            2.直接遍历新数组 同时计算平均值即可


    三、代码

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. int n,m;
    7. cin>>n>>m;
    8. int a[n][m];
    9. double b[n][m];
    10. for(int i=0; i
    11. {
    12. for(int j=0; j
    13. {
    14. cin>>a[i][j];
    15. if(i==n-1||i==0||j==0||j==m-1)
    16. {
    17. b[i][j]=a[i][j];
    18. }
    19. }
    20. }
    21. for(int i=1; i-1; i++)
    22. {
    23. for(int j=1; j-1; j++)
    24. {
    25. b[i][j]=(a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5.0;
    26. }
    27. }
    28. for(int i=0; i
    29. {
    30. for(int j=0; j
    31. {
    32. cout<<round(b[i][j])<<" ";
    33. }
    34. cout<
    35. }
    36. return 0;
    37. }

  • 相关阅读:
    Javascript机器学习教程
    MySql一条 SQL 的生命周期
    UE4光照基础
    146. LRU 缓存
    软件测试基础 - 测试覆盖率
    记录:2022-9-13 正则表达式匹配 Java中的String能有多大 文件系统目录 原子性操作 锁 同步 信号量
    5G 速率介绍
    五.指针与结构体
    STM32开发利器:STM32CubeMX
    如何向开源项目(Apache-InLong)提交代码
  • 原文地址:https://blog.csdn.net/StrawBerryTreea/article/details/126170832