图像过滤(15分)--C语言

文章描述了一种技术任务,即对给定的黑白图像,根据指定的灰度值区间将符合条件的像素替换为另一种颜色。程序通过C语言实现,对输入的像素矩阵进行过滤并输出处理后的图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。

输入格式:

输入在第一行给出一幅图像的分辨率,即两个正整数 M 和 N(0<M,N≤500),另外是待过滤的灰度值区间端点 A 和 B(0≤A<B≤255)、以及指定的替换灰度值。随后 M 行,每行给出 N 个像素点的灰度值,其间以空格分隔。所有灰度值都在 [0, 255] 区间内。

输出格式:

输出按要求过滤后的图像。即输出 M 行,每行 N 个像素灰度值,每个灰度值占 3 位(例如黑色要显示为 000),其间以一个空格分隔。行首尾不得有多余空格。

输入样例:

3 5 100 150 0
3 189 254 101 119
150 233 151 99 100
88 123 149 0 255

输出样例:

003 189 254 000 000
000 233 151 099 000
088 000 000 000 255

分析:

每次输入一个灰度值,就判断一下该灰度值是否大于等于a小于等于b(即在区间[a,b]内),如果在,则把这个灰度值换成替换灰度值;如果不在就继续输入下一个灰度值。

注意:

向左补零的输入方法为’%03d’。

代码

#include <stdio.h>

int main()
{
    int m,n;
    int a,b;
    int t;
    int c[510];
    scanf("%d %d %d %d %d",&m,&n,&a,&b,&t);
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            scanf("%d",&c[j]);
            if(c[j]>=a&&c[j]<=b)
                c[j]=t;
        }
        for(int k=0;k<n-1;k++)
            printf("%03d ",c[k]);
        printf("%03d\n",c[n-1]);
    }
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值