• 大小: 583KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-12-19
  • 语言: 其他
  • 标签: RawtoBmp  Raw转Bmp  

资源简介

程序功能: 简单"(8bit)Raw图像文件转换为(RGB24)Bmp图像文件"演示. 程序说明: 此程序只适合8bit的Raw图像文件转换, 如果是为10bit或12bit等, 请自己修改程序. "测试图片"文件夹中提供了"8bitRaw图像文件"以及"转换后的Bmp文件".

资源截图

代码片段和文件信息

/********************************************************************
created: 2010/04/06
created: 6:4:2010   18:00
filename:  RawToBmp.cpp
file path: RAW8ToRGB24
file base: RawToBmp
file ext: cpp
author: haifeng_liu

purpose: 简单“(8bit)Raw图像文件转换为(RGB24)Bmp图像文件“演示
*********************************************************************/

#include 
#include 
#include 
#include 


#define H 480 // 定义要转换图像行数
#define W 640 // 定义要转换图像列数

// 注: 在将Flag 设置为0之前 请自己实现
// void RGB24_GeomMir( BYTE *pImage const UINT iHeigh const UINT iWidth BOOL bDirection )
// 这个函数
// Flag == 1 则以像素点(包含RGB三个分量)为单位进行操作
// Flag == 0 则分别以R G B分量为单位进行操作
#define Flag 1

typedef enum { 
B // 定义Raw数据中Blue Data
Gb // 定义Raw数据中Green Data
Gr // 定义Raw数据中Green Data
R // 定义Raw数据中Red Data
} ColorType;

typedef struct {
BYTE byB;
BYTE byG;
BYTE byR;
} RGBPixel; // 定义RGB24的一个像素点

typedef struct {
DWORD dwBout;
DWORD dwGout;
DWORD dwRout;
} RGBSumData;

// 常见RAW转RGB 有“最邻近插值法“和“双线性插值算法“
// 这里使用双线性插值算法 使用双线性插值算法得到的图像比较平滑 
// 而利用“最邻近插值算法“会丢失图像的一些边缘信息 优点就是速度很快
// 
// +++++
void BToRGB(const UINT iY const UINT iX const BYTE *pImage RGBSumData& SumData);
void GbToRGB(const UINT iY const UINT iX const BYTE *pImage RGBSumData& SumData);
void GrToRGB(const UINT iY const UINT iX const BYTE *pImage RGBSumData& SumData);
void RToRGB(const UINT iY const UINT iX const BYTE *pImage RGBSumData& SumData);
void AjustValue(RGBSumData& SumData);
// -----

// 对图像做垂直镜像变换
void RGB24_GeomMirV(RGBPixel *pImage const UINT iHeigh const UINT iWidth);
void RGB24_GeomMirV(BYTE *pImage const UINT iHeigh const UINT iWidth);

// 对图像做水平镜像变换
void RGB24_GeomMirH(RGBPixel *pImage const UINT iHeigh const UINT iWidth);
void RGB24_GeomMirH(BYTE *pImage const UINT iHeigh const UINT iWidth);

// 对图像做镜像变换
void RGB24_GeomMir(RGBPixel *pImage const UINT iHeigh const UINT iWidth BOOL bDiretion);
void RGB24_GeomMir(BYTE *pImage const UINT iHeigh const UINT iWidth BOOL bDirection);


void main()
{
UINT i = 0 j = 0;
ULONG lIdx = 0;
char filename[50];
RGBSumData SumData = {0};
ColorType ct;
    BYTE* image1=new BYTE[H*W];
#if Flag
RGBPixel *image2 = new RGBPixel[H*W];
#else
BYTE *image3 = new BYTE[H*W*3];
#endif

BITMAPFILEHEADER* fileheader;
BITMAPINFOHEADER* infoheader;
unsigned int FHlen=sizeof(BITMAPFILEHEADER);
unsigned int IHlen=sizeof(BITMAPINFOHEADER);

//位图信息头结构
infoheader=new BITMAPINFOHEADER;
memset(infoheader0IHlen);
infoheader->biSize =40;
infoheader->biWidth =W;
infoheader->biHeight =H;
infoheader->biPlanes =1;
infoheader->biBitCount =24;
infoheader->biCompression =BI_RGB;
infoheader->biSizeImage =H*W*3;

//位图文件头结构
fileheader=new BITMAPFILEHEADER;
memset(fileheader0FHlen);
fileheader->bfType =0x4D42;
fileheader->bfSize =FHlen+IHlen+H*W*3;
fileheader->bfOffBits=FHlen+IHle

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      12109  2010-04-06 18:03  RAW8ToRGB24\RawToBmp.cpp

     文件       3429  2010-03-15 18:46  RAW8ToRGB24\RawToBmp.dsp

     文件        541  2010-03-15 13:39  RAW8ToRGB24\RawToBmp.dsw

     文件      57344  2010-04-06 18:04  RAW8ToRGB24\Release\RawToBmp.exe

     文件     307200  2010-03-11 16:16  RAW8ToRGB24\测试图片\待转换的Raw文件\BufferRAW.raw

     文件     921654  2010-04-06 17:54  RAW8ToRGB24\测试图片\转换后的Bmp文件\Buffer.bmp

     文件        216  2010-04-06 18:08  RAW8ToRGB24\说明.txt

     目录          0  2010-04-06 17:55  RAW8ToRGB24\测试图片\待转换的Raw文件

     目录          0  2010-04-06 17:55  RAW8ToRGB24\测试图片\转换后的Bmp文件

     目录          0  2010-04-06 18:04  RAW8ToRGB24\Release

     目录          0  2010-04-06 17:55  RAW8ToRGB24\测试图片

     目录          0  2010-04-06 18:07  RAW8ToRGB24

----------- ---------  ---------- -----  ----

              1302493                    12


评论

共有 条评论