rgb to yuv 互相轉化

2021-06-25 18:37:29 字數 2457 閱讀 4552

說明:下面的**用c\c++執行都可以,用c的時候請把#include刪除。

rgb to yuv420 原**:  rgb2yuv.cpp檔案

[cpp]view plain

copy

#include 

#include 

#include 

#include

//轉換矩陣

#define my(a,b,c) (( a*  0.2989  + b*  0.5866  + c*  0.1145))

#define mu(a,b,c) (( a*(-0.1688) + b*(-0.3312) + c*  0.5000 + 128))

#define mv(a,b,c) (( a*  0.5000  + b*(-0.4184) + c*(-0.0816) + 128))

//大小判斷

#define dy(a,b,c) (my(a,b,c) > 255 ? 255 : (my(a,b,c) < 0 ? 0 : my(a,b,c)))

#define du(a,b,c) (mu(a,b,c) > 255 ? 255 : (mu(a,b,c) < 0 ? 0 : mu(a,b,c)))

#define dv(a,b,c) (mv(a,b,c) > 255 ? 255 : (mv(a,b,c) < 0 ? 0 : mv(a,b,c)))

//只處理352*288檔案

#define width 352

#define height 288

//讀bmp

void readbmp(unsigned char *rgb,file *fp);  

//轉換函式

void convert(unsigned char *rgb, unsigned char *yuv);  

//入口

int main()  

rgb = (unsigned char*)malloc(imgsize*6);  

yuv = (unsigned char*)malloc(imgsize + (imgsize>>1));  

for(i=1; i<2; i++)  

fclose(fp2);  

if(rgb)  

free(rgb);  

if(yuv)  

free(yuv);  

printf("完成\n");  

system("pause");  

return 1;  

}  //讀bmp

void readbmp(unsigned char *rgb,file *fp)  

//順序調整

for(i=0; (unsigned int)i < width*height*3; i+=3)  

}  void convert(unsigned char *rgb, unsigned char *yuv)  

}  }  

yuv420 to rgb 原**: yuv2rgb.cpp檔案

[cpp]view plain

copy

#include 

#include 

#include 

#define width 352

#define height 288

//轉換矩陣

double yuvtorgb[3][3] = ;  

//根據rgb三分量寫bmp,不必關注

int writebmp(int width, int height, unsigned char *r,unsigned char *g,unsigned char *b, char *bmpfilename);  

//轉換函式

int convert(char *file, int width, int height, int n)  

//寫到bmp檔案中

sprintf(bmpfilename, "test.bmp", file, n);  

writebmp(width, height, ctemp[3], ctemp[4], ctemp[5], bmpfilename);  

free(yuv);  

free(rgb);  

return n;  

}  //入口 沒啥東西

void main()  

//寫bmp  不必關注

int writebmp(int width, int height, unsigned char *r,unsigned char *g,unsigned char *b, char *bmpfilename)  

}  fwrite(wrgb, 1, byteperline*height+54, fp);  

free(wrgb);  

fclose(fp);  

return 1;  

reduce map filter 互相轉化

python有乙個有意思的事情,就是reduce map和filter,三者可以相互轉換。例如以reduce為基礎,可以實現map和filter函式如下 1 def map func,iterable 2 return reduce lambda orlst,iterable,3 4def filt...

jQuery DOM 物件互相轉化

1.jquery物件 jquery物件就是使用 domobj 將dom物件包裝起來。一般在jquery物件前面加上 這樣與dom物件區分,它已經是一種公認的命名約定。jquery物件不能呼叫dom物件的屬性和方法,同樣dom物件也不能呼叫jquery物件的屬性和方法。2.jquery物件轉成dom物...

CString與double互相轉化

1.double轉化為cstring 在mfc程式中,可以使用format方法方便的實現int float和double等數字型別轉換為cstring字串。以下是cstring的format支援的格式說明 c 單個字元 d 十進位制整數 int ld 十進位制整數 long f 十進位制浮點數 fl...