首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于平滑图像和读写图像的有关问题,多谢

2012-04-20 
关于平滑图像和读写图像的问题,求助,谢谢。/*这是一个利用3*3模板对raw格式图像进行平滑的程序。先读入,再平

关于平滑图像和读写图像的问题,求助,谢谢。
/*这是一个利用3*3模板对raw格式图像进行平滑的程序。先读入,再平滑,最后将平滑后的图像写入result.raw*/
#include<stdio.h>
void main()
{
/*声明变量*/
unsigned char *pData=new unsigned char[256*256]; //源图像
unsigned char *pnewData=new unsigned char[256*256];//平滑后的图像
int value[256]={0}; //图像灰度值
int i;
FILE *fp; //源图像指针
FILE *fp2; //结果图像指针
fp=fopen("Lena.raw","rb"); //打开源图像
if(!fp)
{
printf("Read ERROR!\n");
}
fread(pData,sizeof(unsigned char),256*256,fp); //将源图像数据读入pData数组中
/*用模板做平滑(先不考虑边界)*/
for(i=0;i<(253*256+253);i++)//遍历非边界点,将九个值的平均值赋给中间那个值
{
pnewData[i]=(pData[i]+pData[i+1]+pData[i+2]+pData[i+256]+pData[i+257]+pData[i+258]+
pData[i+256*2]+pData[i+1+256*2]+pData[i+2+256*2])/9; //???????不对?
//(int)pnewData=((int)pData[i]+(int)pData[i+1]+(int)pData[i+2]+(int)pData[i+256]+(int)pData[i+257]+(int)pData[i+258]+
// (int)pData[i+256*2]+(int)pData[i+1+256*2]+(int)pData[i+2+256*2])/9; //这样会报错。。。

}

fclose(fp);

/*将结果数组写回一个新的result.raw*/

fp2=fopen("result.raw","wb");
//for(j=0;j<254*254;j++)
//{
//fprintf(fp2,"%c",pnewData[j]);
//}
fwrite(&pnewData,(254*254),sizeof(unsigned char),fp2);
fclose(fp2);
delete[] pData;
delete[] pnewData;
}


最后result.raw成功生成并且可以打开,但是什么都没有图像是白色的。。。。我的值没赋过去??????

[解决办法]
把问题分解:读取是否正确+新值是否正确+写入是否正确;这三步每一步都可以直接在代码里监测.检查一次就知道了.
[解决办法]
我觉得你的像素处理有问题
[解决办法]
应该是边界处理那里的问题,好好改一下那个循环就好了。

热点排行