• 大小: 3.92MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-27
  • 语言: C/C++
  • 标签:

资源简介

利用C语言实现JPEG图片解码,转换为BMP图片,在将其灰度化,自定义阈值二值化。

资源截图

代码片段和文件信息

#include 
#include 
#include 
/*以下注释部分为BMP灰度图的文件结构(已经包含在windows.h文件中在此列出来方便LZ参考)*/
/*
//位图文件头
typedef struct tagBITMAPFILEHEADER {
  WORD bfType; 
  DWORD bfSize; 
  WORD bfReserved1; 
  WORD bfReserved2; 
  DWORD bfOffBits; 
} BITMAPFILEHEADER; 


typedef struct tagBITMAPINFOHEADER { 
  DWORD biSize; 
  LONG biWidth; 
  LONG biHeight; 
  WORD biPlanes; 
  WORD biBitCount 
  DWORD biCompression; 
  DWORD biSizeImage; 
  LONG biXPelsPerMeter; 
  LONG biYPelsPerMeter; 
  DWORD biClrUsed; 
  DWORD biClrImportant; 
} BITMAPINFOHEADER; 

//彩色表
typedef struct tagRGBQUAD { 
 BYTE rgbBlue;
 BYTE rgbGreen;
 BYTE rgbRed;
 BYTE rgbReserved;
} RGBQUAD;

//位图信息头
typedef struct tagBITMAPINFO { 
 BITMAPINFOHEADER bmiHeader;
 RGBQUAD bmiColors[1];
} BITMAPINFO;

*/

void main()
{//所举例程为从BMP灰度图中抽取一层并输出为图片
 FILE *fi*fo;
 UINT count=0;
 BITMAPFILEHEADER bmfh;
 BITMAPINFO bmi;
 int ij;
 BYTE p;
 BYTE buf[2000];


 //fi = fopen(“bupt_8bit.bmp““rb“);
 fi = fopen(“test.bmp““rb“);
 if(fi==NULL)
 {
  printf(“文件打开错误!\n“);
  return;
 }

 //读取文件头
 fread(&bmfhsizeof( bmfh ) 1fi);

 printf(“文件头信息:\n“);
 printf(“文件类型:%c%c\n“bmfh.bfType%256 bmfh.bfType/256);
 printf(“文件大小:%d\n“bmfh.bfSize);
 printf(“图像数据偏移量:%d\n“bmfh.bfOffBits);
 

 //读BMP信息头--------读彩色表
 fread(&bmisizeof(BITMAPINFO)1fi);
 
 printf(“\n图像信息:\n“);
 printf(“位图宽度:%d\n“bmi.bmiHeader.biWidth);
 printf(“位图高度:%d\n“bmi.bmiHeader.biHeight);
 printf(“每个像素的位数:%d\n“bmi.bmiHeader.biBitCount);
 printf(“位图数据的大小:%d\n“bmi.bmiHeader.biSizeImage);
 printf(“用像素/米表示的水平分辨率:%d\n“bmi.bmiHeader.biXPelsPerMeter);
 printf(“用像素/米表示的垂直分辨率:%d\n“bmi.bmiHeader.biYPelsPerMeter);
 printf(“每个像素的位数:%d\n“bmi.bmiHeader.biBitCount);
 printf(“位图使用的颜色数:%d\n“bmi.bmiHeader.biClrUsed);
 

 
 for(i=0;i<8;i++)//像为8bits,所以只有8层
 {
  //fo = fopen(“bupt_8bit_out.bmp““wb“);
  fo = fopen(“bupt_out.bmp““wb“);

  fseek(fi00);
  fread(&buf1bmfh.bfOffBitsfi);//1是因为此处图像为8bits的,所以size是1字节
  fwrite(&buf1bmfh.bfOffBitsfo);

  fseek(fibmfh.bfOffBits0);//将指针定位到图像数据处,偏移量为bmfh.bfOffBits

  for(j=0;j  {
   fread(&p11fi);
   p = (p>>(i+1))<<(i+1);//将后最低i+1层写为0
   fwrite(&p11fo);
  }
  
  while(fread(&p11fi))
   fwrite(&p11fo);
  
  fclose(fo);
  
  printf(“替换%d后的结果回车继续。\n“i);
  getchar();
 }
 fclose(fi); 
 getchar();


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-11-04 11:46  JPEGtoGarytoBIN_c代码\
     目录           0  2017-10-24 23:05  JPEGtoGarytoBIN_c代码\bmptoBIN\
     文件        2726  2017-10-10 01:29  JPEGtoGarytoBIN_c代码\bmptoBIN\bmp (2).c
     文件        2726  2017-10-10 01:29  JPEGtoGarytoBIN_c代码\bmptoBIN\bmp.c
     文件      133584  2017-10-10 01:29  JPEGtoGarytoBIN_c代码\bmptoBIN\bmp.exe
     文件      493554  2017-10-10 10:25  JPEGtoGarytoBIN_c代码\bmptoBIN\bupt_out.bmp
     文件      493554  2017-10-10 00:44  JPEGtoGarytoBIN_c代码\bmptoBIN\test.bmp
     文件        2781  2017-10-10 01:25  JPEGtoGarytoBIN_c代码\bmptoBIN\用C语言进行BMP图像二值化-显示其长宽-最好有解释.txt
     目录           0  2017-10-24 23:05  JPEGtoGarytoBIN_c代码\jpegTobmp\
     文件         758  1998-04-23 14:04  JPEGtoGarytoBIN_c代码\jpegTobmp\JPEG.H
     文件        1214  2017-10-10 16:25  JPEGtoGarytoBIN_c代码\jpegTobmp\Makefile.win
     文件      921654  2017-10-10 16:25  JPEGtoGarytoBIN_c代码\jpegTobmp\RGB.bmp
     文件       23059  2017-10-10 16:25  JPEGtoGarytoBIN_c代码\jpegTobmp\jpeg2bmp.c
     文件       25438  2017-10-10 16:25  JPEGtoGarytoBIN_c代码\jpegTobmp\jpeg2bmp.o
     文件         196  2017-10-10 16:23  JPEGtoGarytoBIN_c代码\jpegTobmp\main.c
     文件        1137  2017-10-10 16:23  JPEGtoGarytoBIN_c代码\jpegTobmp\main.o
     文件       92599  2017-10-10 16:22  JPEGtoGarytoBIN_c代码\jpegTobmp\test.jpg
     文件        1459  2017-10-10 15:54  JPEGtoGarytoBIN_c代码\jpegTobmp\tobmp.dev
     文件      151580  2017-10-10 16:25  JPEGtoGarytoBIN_c代码\jpegTobmp\tobmp.exe
     文件         414  2017-10-10 18:37  JPEGtoGarytoBIN_c代码\jpegTobmp\tobmp.layout
     目录           0  2017-10-24 23:05  JPEGtoGarytoBIN_c代码\jpegTobmp\新建文件夹\
     文件        2367  2017-10-10 00:54  JPEGtoGarytoBIN_c代码\jpegTobmp\新建文件夹\binary.c
     文件        1341  2017-10-10 00:54  JPEGtoGarytoBIN_c代码\jpegTobmp\新建文件夹\binary.o
     文件       15217  2017-10-10 00:11  JPEGtoGarytoBIN_c代码\jpegTobmp\新建文件夹\test.jpg
     文件        4474  2017-10-10 00:56  JPEGtoGarytoBIN_c代码\jpegTobmp\新建文件夹\tobinary.c
     文件        3084  2017-10-10 00:53  JPEGtoGarytoBIN_c代码\jpegTobmp\新建文件夹\tobinary.o
     文件          86  2017-10-10 00:32  JPEGtoGarytoBIN_c代码\jpegTobmp\说明.txt
     目录           0  2017-10-24 23:05  JPEGtoGarytoBIN_c代码\toBIN\
     文件      165578  2017-10-10 22:40  JPEGtoGarytoBIN_c代码\toBIN\1.bmp
     文件        3651  2017-10-10 10:36  JPEGtoGarytoBIN_c代码\toBIN\bin.c
     文件      135137  2017-10-10 01:45  JPEGtoGarytoBIN_c代码\toBIN\bin.exe
............此处省略39个文件信息

评论

共有 条评论

相关资源