[問題] 關於BCB的色彩轉換??
這是我寫的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
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章