⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpp1.cpp

📁 图像插值程序
💻 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 + -