我是工程力学专业的大一新生,爱上了C语言,过来人给点建议吧!

Python023

我是工程力学专业的大一新生,爱上了C语言,过来人给点建议吧!,第1张

你才大一就有这样的想法很不错~

不过最好还是去找一份家教的工作,然后用赚来的钱,去学点技术;其他你感兴趣的也可以,比如编程什么的;

四年下来,你就可以积累足够的技术和经验~ 将来出去工作什么的都会很轻松的;

哎~ 我快毕业了,有些小痛苦,虽然也看了很多书,但是没有培养起来一些比较核心的技术,现在挺难受的~

另外有个建议,除了四六级,计算机二级,其余的证都不要去考~

纯粹浪费时间和金钱,出去没有一家HR会看这些

// 我只是简单的看了一下,难免有错,请见谅。希望能帮助您,如果有问题请回复。

// 祝你学习顺利

# include <stdio.h>

# include <stdlib.h>

# include <string.h>

# include <malloc.h>

# include <ctype.h>

# include <process.h>

# include <windows.h>

// 上面这些是头文件,include之后可以使用其中定义的函数变量,比如Include <string.h>之后就可以使用string这个类了。

int bitmapToGray(char *OriginalBMP,char *ResultBMP)//声明了一个函数将bitmap转换为灰度图像,括号里面的是输入的变量。这个相当于告诉编译器,后面会有一个函数叫这个名字,但没有具体定义函数内容。

int main() // 这个main函数是整个程序的入口,进入入口之后,程序会调用bitmapToGray这个函数。

{

bitmapToGray("C:\\Users\\Sky\\Desktop\\LONGJIANG.bmp",

"C:\\Users\\Sky\\Desktop\\LONGJIANG2.bmp")

return 0

}

int bitmapToGray(char *OriginalBMP,char *ResultBMP) // 这里是bitmapToGray函数的具体定义,相当于把这个函数具体做什么一步一步写出来。

{

unsigned char *BMP24Image,*BMP8Image

BITMAPFILEHEADER fh

BITMAPINFOHEADER ih

RGBQUAD Color[256]

BYTE CTemp[3] //颜色分量

int Row,Col,nCol

int i,j,k

FILE *f,*p

//上面的都是声明变量,这些变量的申请速度很快,因为他们在栈上,这个空间一般有1M,读写速度都比较快,使用起来安全。

BMP24Image=(unsigned char*)calloc(2000*2000,sizeof(unsigned char))

BMP8Image=(unsigned char*)calloc(1000*1000,sizeof(unsigned char))

//上面是申请空间,这个空间是在堆上面,这个堆基本就是内存,和虚拟内存了,很大,但是会比较慢,而且管理起来比较复杂。

if((f=fopen(OriginalBMP,"rb"))==NULL)

{

printf("open %s error,please check\n")

return 0

}

fread(&fh,sizeof(BITMAPFILEHEADER),1,f)

if(fh.bfType!='MB')

{

printf("This is not a BMP picture\n")

return 0

}

fh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)

+sizeof(RGBQUAD)*256

fread(&ih,sizeof(BITMAPINFOHEADER),1,f)

Row=ih.biHeight

Col=ih.biWidth

Col=Col/4*4

nCol=Col*4/4*4 //扫描宽度

ih.biBitCount=8 //改变像素位数大小,8位,256色

fread(BMP24Image,sizeof(unsigned char),Row*Col,f)

// 上面就是读取BMP图像

for(i=0i<Rowi++)

{ for(j=0j<Colj++)

{

if(BMP24Image[i*Col+j]>128)

BMP8Image[i*Col+j]=255

else BMP8Image[i*Col+j]=100

// 上面是对BMP进行二值化处理

for(k=0k<3k++)

{

CTemp[k]=BMP24Image[i*nCol+j*3+k]

}

BMP8Image[i*Col+j]=CTemp[2]*0.299+CTemp[1]*0.587+CTemp[0]*0.114//转化公式

}

}

// 上面大概是空间转换YUV到RGB

fclose(f)

if((p=fopen(ResultBMP,"wb"))==NULL)

{

printf("open savefile error\n")

return 0

}

// 准备进行写入操作

for(i=0i<256i++)//调色板

{

Color[i].rgbBlue=i

Color[i].rgbGreen=i

Color[i].rgbRed=i

Color[i].rgbReserved=0

}

// 灰度图是从0~255,上面大概是进行灰度处理

fwrite(&fh,sizeof(BITMAPFILEHEADER),1,p)

fwrite(&ih,sizeof(BITMAPINFOHEADER),1,p)

fwrite(Color,sizeof(RGBQUAD),256,p)

fwrite(BMP8Image,sizeof(unsigned char),Row*Col,p)

fclose(p)

// 上面进行写入操作,并且关闭

return 0

}