實驗內容:將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...