鱼C论坛

 找回密码
 立即注册
查看: 3047|回复: 0

VC++ QQ桌球WG源码问题(编译通过,运行程序崩溃)急急急

[复制链接]
发表于 2012-11-27 21:20:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前天朋友给了一个QQ桌球WG程序源码,但是不知道这程序怎么的,编译都通过了,
但是运行的时候崩溃了,在灰度化的时候正常,但是在二值化时崩溃了,

调试了很久都没找到原因,请给位朋友看看,本人菜鸟一个,忘大牛多多

帮忙,再次谢谢大家了


下面QQ桌球WG程序源码的链接:



http://pan.baidu.com/share/link?shareid=111425&uk=2936981401



程序出错地方:


void changefile2(TCHAR *NAME1,TCHAR *NAME2,TCHAR *NAME3)
{


BITMAPFILEHEADER   bitHead;   
BITMAPINFOHEADER bitInfoHead;   
FILE* pfile = NULL;   
WORD fileType;
pfile = fopen(NAME1,"rb");//打开文件   


if(pfile!=NULL)   
{   
                  
        fread(&fileType,1,sizeof(WORD),pfile);   
        fread(&bitHead,1,sizeof(tagBITMAPFILEHEADER),pfile);   
        //读取位图信息头信息   
        fread(&bitInfoHead,1,sizeof(BITMAPINFOHEADER),pfile);   
        
}   

tagRGBQUAD *pRgb ;   

//读取调色盘结信息   
long nPlantNum = long(pow(2,double(bitInfoHead.biBitCount)));    //   Mix color Plant Number;   
pRgb=(tagRGBQUAD *)malloc(nPlantNum*sizeof(tagRGBQUAD));   
memset(pRgb,0,nPlantNum*sizeof(tagRGBQUAD));   
int num = fread(pRgb,4,nPlantNum,pfile);   



int width = bitInfoHead.biWidth;   
int height = bitInfoHead.biHeight;

//分配内存空间把源图存入内存      
BYTE    *pColorData=(BYTE *)malloc(height*width); //ad  
memset(pColorData,0,height*width);//ad      
long nData = height*width;  //ad

//把位图数据信息读到数组里      
fread(pColorData,1,nData,pfile);      

//将位图数据转化为RGB数据   
tagRGBQUAD* dataOfBmp;   
dataOfBmp = (tagRGBQUAD *)malloc(width*height*sizeof(tagRGBQUAD));//用于保存各像素对应的RGB数据   
memset(dataOfBmp,0,width*height*sizeof(tagRGBQUAD));   


int k;   
int index = 0;
for(int i=0;i<height;i++)   
for(int j=0;j<width;j++)   
{   
        BYTE mixIndex= 0;   
        
        k = i*width + j;  //ad
        
        mixIndex = pColorData[k];   
        
        dataOfBmp[index].rgbRed = pRgb[mixIndex].rgbRed;   
        dataOfBmp[index].rgbGreen = pRgb[mixIndex].rgbGreen;   
        dataOfBmp[index].rgbBlue = pRgb[mixIndex].rgbBlue;   
        dataOfBmp[index].rgbReserved = pRgb[mixIndex].rgbReserved;   
        index++;   
}        

sobelEdgeDetectV(pColorData,width,height);//sobel


FILE *pwrite=NULL;//写sobel之后的图像
pwrite=fopen(NAME2,"wb");

fwrite(&fileType,sizeof(WORD),1,pwrite);
fwrite(&bitHead,sizeof(tagBITMAPFILEHEADER),1,pwrite);
fwrite(&bitInfoHead,sizeof(BITMAPINFOHEADER),1,pwrite);
fwrite(pRgb,4,nPlantNum,pwrite);
fwrite(pColorData,1,nData,pwrite);
fclose(pwrite);

adaptiveB(pColorData,width,height);//自适应

FILE *pwrite1=NULL;//写自适应二值化之后的图像
pwrite1=fopen(NAME3,"wb");

fwrite(&fileType,sizeof(WORD),1,pwrite1);
fwrite(&bitHead,sizeof(tagBITMAPFILEHEADER),1,pwrite1);
fwrite(&bitInfoHead,sizeof(BITMAPINFOHEADER),1,pwrite1);
fwrite(pRgb,4,nPlantNum,pwrite1);
fwrite(pColorData,1,nData,pwrite1);
fclose(pwrite1);


fclose(pfile);   
if (bitInfoHead.biBitCount<24)   
{   
        free(pRgb);   
}   
free(dataOfBmp);   
free(pColorData);   


}
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 13:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表