RGB 2 YUV 亮度与对比度调节

从BMP图中读取RGB值并转化成YUV

BYTE *** rgb2yuv(const char *filename)
{
  BYTE ***image;
  FILE *file;
  int i, j, k;
  int biBitCount, offset;
  int *x;

  /*
    RGBQUAD aColors[];
    BYTE aBitmapBits[];
  */

  if (!(file=fopen(filename,"rb"))) 
    {
      printf("Cannot open file %s.\n", filename);
      return 0;
    }

  fread(&bmfhdr.bfType, sizeof(WORD), 1, file);
  fread(&bmfhdr.bfSize, sizeof(DWORD), 1, file);
  fread(&bmfhdr.bfReserved1, sizeof(WORD), 1, file);
  fread(&bmfhdr.bfReserved2, sizeof(WORD), 1, file);
  fread(&bmfhdr.bfOffBits, sizeof(DWORD), 1, file);
  fread(&bmihdr.biSize, sizeof(DWORD), 1, file);
  fread(&bmihdr.biWidth, sizeof(LONG), 1, file);
  fread(&bmihdr.biHeight, sizeof(LONG), 1, file);
  fread(&bmihdr.biPlanes, sizeof(WORD), 1, file);
  fread(&bmihdr.biBitCount, sizeof(WORD), 1, file);
  fread(&bmihdr.biCompression, sizeof(DWORD), 1, file);
  fread(&bmihdr.biSizeImage, sizeof(DWORD), 1, file);
  fread(&bmihdr.biXPelsPerMeter, sizeof(LONG), 1, file);
  fread(&bmihdr.biYPelsPerMeter, sizeof(LONG), 1, file);
  fread(&bmihdr.biClrUsed, sizeof(DWORD), 1, file);
  fread(&bmihdr.biClrImportant, sizeof(DWORD), 1, file);
  //fread(&bmfhdr,sizeof(bmfhdr),1,file);
  //fread(&bmihdr,sizeof(bmihdr),1,file);

  printf("| biBitCount: %d\n", bmihdr.biBitCount);
  if (bmihdr.biBitCount == 1) {
    RGBQUAD aColors[2];
    for (i=0; i<2; i++) {
      fread(&aColors[i].rgbBlue, sizeof(BYTE), 1, file);
      fread(&aColors[i].rgbGreen, sizeof(BYTE), 1, file);
      fread(&aColors[i].rgbRed, sizeof(BYTE), 1, file);
      fread(&aColors[i].rgbReserved, sizeof(BYTE), 1, file);
      printf("| rgbBlue: %d\t rgbGreen: %d\t rgbRed: %d\t rgbReserved: %d\n", aColors[i].rgbBlue, aColors[i].rgbGreen, aColors[i].rgbRed, aColors[i].rgbReserved);
    }
  } else if (bmihdr.biBitCount == 8) {
    RGBQUAD aColors[256];
    for (i=0; i<8; i++) {
      fread(&aColors[i].rgbBlue, sizeof(BYTE), 1, file);
      fread(&aColors[i].rgbGreen, sizeof(BYTE), 1, file);
      fread(&aColors[i].rgbRed, sizeof(BYTE), 1, file);
      fread(&aColors[i].rgbReserved, sizeof(BYTE), 1, file);
      printf("| rgbBlue: %d\t rgbGreen: %d\t rgbRed: %d\t rgbReserved: %d\n", aColors[i].rgbBlue, aCo
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值