[問題] 關於BCB的色彩轉換??

看板C_and_CPP (C/C++)作者 (kiy)時間15年前 (2011/04/25 20:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
這是我寫的CODE~RGB分別顯示在三張圖上 void __fastcall TForm1::hem1Click(TObject *Sender) { Image1->Picture->Bitmap->Assign(imgorg->Picture->Bitmap); Image2->Picture->Bitmap->Assign(imgorg->Picture->Bitmap); Image3->Picture->Bitmap->Assign(imgorg->Picture->Bitmap); int i, j, r, g, b; Byte **R, **G, **B,*ImgLine,*ImgLine1,*ImgLine2,*ImgLine3; R=new Byte *[ImgHeight]; G=new Byte *[ImgHeight]; B=new Byte *[ImgHeight]; for (i=0; i<ImgHeight; i++) { R[i]=new Byte [ImgWidth]; G[i]=new Byte [ImgWidth]; B[i]=new Byte [ImgWidth]; } for (i=0; i<ImgHeight; i++) { ImgLine=(BYTE *)imgorg->Picture->Bitmap->ScanLine[i]; for (j=0; j<ImgWidth; j++) { B[i][j]=ImgLine[j*3]; G[i][j]=ImgLine[j*3+1]; R[i][j]=ImgLine[j*3+2]; } } he(R); //he跟tw是副程式,所以沒貼!! he(G); he(B); tw(R); tw(G); tw(B); for (i=0; i<ImgHeight; i++) { ImgLine1=(BYTE *)Image1->Picture->Bitmap->ScanLine[i]; ImgLine2=(BYTE *)Image2->Picture->Bitmap->ScanLine[i]; ImgLine3=(BYTE *)Image3->Picture->Bitmap->ScanLine[i]; for (j=0; j<ImgWidth; j++) { ImgLine1[j*3]=B[i][j]; ImgLine1[j*3+1]=B[i][j]; ImgLine1[j*3+2]=B[i][j]; ImgLine2[j*3]=G[i][j]; ImgLine2[j*3+1]=G[i][j]; ImgLine2[j*3+2]=G[i][j]; ImgLine3[j*3]=R[i][j]; ImgLine3[j*3+1]=R[i][j]; ImgLine3[j*3+2]=R[i][j]; } } imgorg->Refresh(); Image1->Refresh(); Image2->Refresh(); Image3->Refresh(); } 我想請問一下~若要換成YCrCb的話! Y = 0.299 * R + 0.587 * G + 0.114 * B; Cb = -0.1687 * R - 0.3313 * G + 0.5 * B + 128; Cr = 0.5 * R - 0.4187 * G - 0.0813 *B + 128; 最主要是說怎樣把這算是寫進去做轉換??請前輩們不吝指教!!感謝~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.217.46
文章代碼(AID): #1DjM9otY (C_and_CPP)
文章代碼(AID): #1DjM9otY (C_and_CPP)