📄 cpp1.cpp
字号:
#include<math.h>
#include<stdio.h>
void main()
{
int height,width,i,j,m,n;
unsigned int a[256][256],value;
unsigned int value1,value2,value3;
float i0,j0,i1,j1,t;
FILE *cp;
printf("---------------------------线性插值缩放-------------------------------\n");
printf("请输入要求的高度和宽度:\n");
printf("height=");
scanf("%d",&height);
printf("\nwidth=");
scanf("%d",&width); //输入要求的高度和宽度
if((cp=fopen("lena.raw","rb"))==NULL)
printf("orignal file can not be opened.");
else
{
for(i=0;i<=255;i++)
{
for(j=0;j<=255;j++)
{
fread(&a[i][j],1,1,cp);
}
}
fclose(cp);
} //用文件读取、存储原始图像中每个像素的灰度值,
if((cp=fopen("linear_zoom.raw","wb"))==NULL)
printf("save file can not be opened."); //将结果保存到文件名为linear_zoom.raw的图像中
else
for(i=0;i<height;i++)
for(j=0;j<width;j++)
{
i0=(float)256*i/height;
j0=(float)256*j/width; //得到新图坐标系下的坐标(i,j)对应的原坐标系下的坐标(i0,j0)
m=(int)i0;
n=(int)j0;
i1=i0-m;
j1=j0-n;
value1=(int)a[m][n]*(1-j1)+a[m][n+1]*j1;
value2=(int)a[m+1][n]*(1-j1)+a[m+1][n+1]*j1;
value3=(int)value1*(1-i1)+value2*i1;
value=(int)value3;
t=value3-value;
if(t>1/2)value=value+1;
fwrite(&value,1,1,cp);
}
fclose(cp);
printf("\n文件已输出至linear_zoom.raw\n");
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -