求程序流程图

[复制链接]
查看11 | 回复1 | 2010-12-23 21:10:52 | 显示全部楼层 |阅读模式
//放大缩小函数的定义
bool sfsan(unsigned char readData[HEIGHT][WIDTH], int width, int height);
void main()
{
int choose;
int width,height;
unsigned char readData[HEIGHT][WIDTH];
//用于存储原图数据的数组
ReadFile(&readData[0][0], WIDTH * HEIGHT, "lena.raw");//从原图读入数据

printf("本程序用三次插值的方法完成图像的缩放功能。\n");
loop:
printf("请选择:\n");
printf("1--缩放 \n2--退出\n");
scanf("%d",&choose);
switch (choose)
{
case 1:
printf("请输入宽度: \t");
scanf("%d", &width);
printf("请输入高度:\t");
scanf("%d", &height);
sfsan(readData,width,height);
break;

case 2:
exit(0);
default:
printf("无效的选择!\n请重新选择!\n\n");
}
goto loop;
}
//利用三次插值法完成的图像放大缩小函数
bool sfsan(unsigned char readData[HEIGHT][WIDTH], int width, int height)
{

unsigned char *writeData = (unsigned char *)malloc(width * height * sizeof(unsigned char));

long int i=0;
int gx,gy;
int k,n;
int xdist,ydist;
float deltax,deltay;
float dx,dx2,dx3;
float dy,dy2,dy3;
float xx,yy,zz;
float gray;
int x1,x2,x3,x4;

int y1,y2,y3,y4;
int x[5],y[5];
float ck0,cl0;
//求插值时原图像的采样间隔
deltax=(float)(WIDTH-3)/width;
deltay=(float)(HEIGHT-3)/height;
for(gy=0;gy=1))

ck0=(float)(4.0-8.0*dy+5.0*dy2-dy3);



if(dy>=2)

ck0=0.0;
for(n=1;n=1))

cl0=(float)(4.0-8.0*dx+5.0*dx2-dx3);



if(dx>=2)

cl0=0.0;

if((y[k]>WIDTH)||(x[k]>HEIGHT))

continue;



zz=zz+(float)readData[y[k]][x[n]]*ck0*cl0;

}

}
gray=(float)zz+0.5;
//限制灰度的上限值为255,下限值为0
if(gray>255)
gray=255;
if(gray<0)
gray=0;


writeData = (char)(int)gray;
//求得的插值点灰度值存入数组writeData
i++;

}

}

回复

使用道具 举报

千问 | 2010-12-23 21:10:52 | 显示全部楼层
这里只说没有服务器的那种:1.建立socket服务2.绑定对方IP及参数3.建立等待监听4.对方发出连接要求5.与对方建立连接成功6.开始数据通讯(有同步或异步两种数据传递方式)7.通讯结束8.断开与对方的连接9.关闭socket服务,释放socket对象
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行