首页 > 软件开发 > C语言 >

C语言里灰度图像怎么转换为二维数组

来源:互联网 2023-03-16 19:07:43 版权归原作者所有,如有侵权,请联系我们

C语言在现在来说是相对比较低级的计算机编程语言,但其执行效率和多平台通用的特性,使得其还是有着广泛的应用的。那么在C语言中对灰度图像怎么转换为二维数组呢?hWj办公区 - 实用经验教程分享!

C语言里灰度图像怎么转换为二维数组hWj办公区 - 实用经验教程分享!

工具/原料

  • C语言编译环境

方法/步骤

  • 1

    要使用C语言进行灰度图像的处理,要用到专门的函数,并使用指针做内存位移操作hWj办公区 - 实用经验教程分享!

    C语言里灰度图像怎么转换为二维数组hWj办公区 - 实用经验教程分享!

  • 2

    hWj办公区 - 实用经验教程分享!

    在执行读取图像数据文件的操作时,需要使用函数有:hWj办公区 - 实用经验教程分享!

    fopen: 此函数用来打开指定的文件,返回文件指针hWj办公区 - 实用经验教程分享!

    fread:用来从文件中获取数据hWj办公区 - 实用经验教程分享!

    fclose:用来将打开的文件关闭hWj办公区 - 实用经验教程分享!

    hWj办公区 - 实用经验教程分享!

    C语言里灰度图像怎么转换为二维数组hWj办公区 - 实用经验教程分享!

  • 3

    有了以上这几个关键的函数方法,就可以开始处理灰度图像操作了hWj办公区 - 实用经验教程分享!

    C语言里灰度图像怎么转换为二维数组hWj办公区 - 实用经验教程分享!

  • 4

    其实现的逻辑思路是,首先从图像文件中读取图像数据到内存中,并从中获取文件头、信息头的数据信息hWj办公区 - 实用经验教程分享!

    C语言里灰度图像怎么转换为二维数组hWj办公区 - 实用经验教程分享!

  • 5

    接着,根据这些数据信息,从读取到内存中的数据里移动指针,读取具体的图像矩阵信息,并将其转存到二维数组即可hWj办公区 - 实用经验教程分享!

    C语言里灰度图像怎么转换为二维数组hWj办公区 - 实用经验教程分享!

  • 6

    具体的代码示例如下:hWj办公区 - 实用经验教程分享!

    hWj办公区 - 实用经验教程分享!

    FileName=fileDlg.GetFileName();hWj办公区 - 实用经验教程分享!

    FILE*fp=fopen(FileName,"rb");//二进制读方式打开指定的图像文件hWj办公区 - 实用经验教程分享!

    fread(&FileHead,sizeof(BITMAPFILEHEADER),1,fp);//读取文件头,文件指针自动后移hWj办公区 - 实用经验教程分享!

    fread(&InfoHead,sizeof(BITMAPINFOHEADER),1,fp);//读取信息头,文件指针自动后移hWj办公区 - 实用经验教程分享!

    //获取图像宽、高、每像素所占位数等信息hWj办公区 - 实用经验教程分享!

    bmpWidth=InfoHead.biWidth;hWj办公区 - 实用经验教程分享!

    bmpHeight=InfoHead.biHeight;hWj办公区 - 实用经验教程分享!

    //下面完成图像数据向内存数组的存储hWj办公区 - 实用经验教程分享!

    ImageData=newunsignedchar*[bmpHeight];hWj办公区 - 实用经验教程分享!

    if(InfoHead.biBitCount==24)hWj办公区 - 实用经验教程分享!

    {hWj办公区 - 实用经验教程分享!

    for(inti=0;ibmpHeight;i )hWj办公区 - 实用经验教程分享!

    {hWj办公区 - 实用经验教程分享!

    ImageData[i]=newunsignedchar[(bmpWidth*3 3)/4*4];hWj办公区 - 实用经验教程分享!

    }hWj办公区 - 实用经验教程分享!

    for(intk=0;kbmpHeight;k )hWj办公区 - 实用经验教程分享!

    {hWj办公区 - 实用经验教程分享!

    for(intj=0;j(bmpWidth*3 3)/4*4;j )hWj办公区 - 实用经验教程分享!

    {hWj办公区 - 实用经验教程分享!

    fread(&ImageData[k][j],1,1,fp);//上面完成动态二维数组的申请,这里实际读取图像数据hWj办公区 - 实用经验教程分享!

    }hWj办公区 - 实用经验教程分享!

    }hWj办公区 - 实用经验教程分享!

    fclose(fp);//关闭文件hWj办公区 - 实用经验教程分享!

    hWj办公区 - 实用经验教程分享!

    C语言里灰度图像怎么转换为二维数组hWj办公区 - 实用经验教程分享!

  • 6相关内容未经授权抓取自百度经验
  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!hWj办公区 - 实用经验教程分享!


    标签: C语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号