資料壓縮實驗 TGA檔案轉YUV檔案

2021-10-04 22:28:37 字數 3005 閱讀 1081

實驗內容:將tga影象檔案轉化為yuv檔案

tga檔案頭有5個字段,共18個位元組

typedef

struct

tgafileheader;

tgafileheader tgaheader;

tga_file.

read((

char*)

&tgaheader,

sizeof

(tgafileheader)

);

int pixelcount = tgaheader.width * tgaheader.height;

int bitdepth =24;

int colortable =0;

//沒有顏色表

unsigned

char

* r =

newunsigned

char

[pixelcount]

;unsigned

char

* g =

newunsigned

char

[pixelcount]

;unsigned

char

* b =

newunsigned

char

[pixelcount]

;unsigned

char

* buffer =

newunsigned

char

;unsigned

char

* buffer =

newunsigned

char

[pixelcount *3]

; rgb_buffer =

newunsigned

char

[pixelcount *3]

;//rgb_buffer = (unsigned char*)malloc(pixelcount * 3 * sizeof(unsigned char*));

int offset =0;

if(tgaheader.idlength ==0)

//沒有影象資訊字段

if(tgaheader.idlength !=0)

if(tgaheader.colormaptype !=0)

//有顏色表

//沒有顏色表

tga_file.

read((

char

*)buffer, size + offset)

; rgb = buffer + offset;

if(colortable ==0)

}//有顏色表

if(colortable ==1)

if(i %3==

1)if(i %3==

2)}}

int height = tgaheader.height;

for(

int i =

0; i < tgaheader.height; i++)}

for(

int i =

0; i < pixelcount; i++

) imagesize = pixelcount;

return rgb_buffer;

(這一步在上乙個實驗中已實現過)

rgb2yuv.cpp

#include

"stdlib.h"

#include

"rgb2yuv.h"

static

float rgbyuv02990[

256]

, rgbyuv05870[

256]

, rgbyuv01140[

256]

;static

float rgbyuv01684[

256]

, rgbyuv03316[

256]

;static

float rgbyuv04187[

256]

, rgbyuv00813[

256]

;void

rgb2yuv

(int size,

unsigned

char

* rgb,

unsigned

char

* yuv)

b = rgb;

for(

int i =

0; i < size; i++)}

void

initlookuptable()

main.cpp

#include

#include

#include

#include

"rgb2yuv.h"

using

namespace std;

intmain()

ofstream yuv_file

("1.yuv"

, ios::binary);if

(!yuv_file)

rgb_buffer =

tga2bgr

(tga_file, rgb_buffer, imagesize)

;rgb2yuv

(rgbsize, rgb_buffer, yuv_buffer)

; yuv_file.

write((

char

*)yuv_buffer, imagesize *3)

;free

(rgb_buffer)

;free

(yuv_buffer)

; yuv_file.close;

tga_file.close;

}

資料壓縮實驗報告2 TGA轉YUV

寫在前面 由於大二上學習c 時沒有進行充分的練習,這次的實驗先是自己想了很久但是無果,最後只能參考同學的 看不懂的地方和同學討論並逐漸理解。感覺自己的情況就是知道大概的思路方法,但是不知道如何用 實現。在沒有參考的前提下沒法自己寫出完整的 還是需要多思考多練習。pga struct.h 用來建立pg...

資料壓縮實驗一 yuv轉rgb格式實驗報告

一 實驗基本原理 yuv轉 rgb格式轉換公式 r y 1.4020 v 128 g y 0.3441 u 128 0.7141 v 128 b y 1.7720 u 128 分析 由rgb到 yuv格式的轉換公式 y 0.2990r 0.5870g 0.1140b r y 0.7010r 0.58...

資料壓縮實驗報告2 bmp轉yuv

1 bmp檔案格式 bmp bitmap 是windows作業系統中的標準影象檔案格式,可分為裝置相關位圖 ddb 和裝置無關位圖 dib 使用十分廣泛。它採用位對映存貯格式,除了影象深度可選外,絕大多數無壓縮,因此所佔空間很大。bmp檔案的影象深度可選1bit,4bit,8bit,16bit及24...