程式的部分:
首先先開啟一張bmp圖片
OpenPictureDialog1->Execute();
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
再來我要取得圖片寬高
Graphics::TBitmap *Bmp = new Graphics::TBitmap();
Bmp->Assign(Image1->Picture->Bitmap);
iImageHeight= Bmp->Height;
iImageWidth = Bmp->Width;
宣告三個二維動態陣列
try
{
ucMR = new unsigned char *[iImageHeight];
for (j=0;jucMR[j] = new unsigned char [iImageWidth];
}
catch (std::bad_alloc)
{
ShowMessage("Could not allocate memory...Bye");
exit(-1);
}
取得圖片RGB值分別存入陣列
for(i=0;iHeight;i++)
for(j=0;jWidth;j++)
{
ucMR[i][j] =GetRValue(Image1->Canvas->Pixels[i][j]);
ucMG[i][j] =GetGValue(Image1->Canvas->Pixels[i][j]);
ucMB[i][j] =GetBValue(Image1->Canvas->Pixels[i][j]);
}
顯示RGB值輸出
if (Image1->Picture->Bitmap->Empty!=true)
{
Form1->Label1->Caption=AnsiString(ucMR[X][Y]);
Form1->Label2->Caption=AnsiString(ucMG[X][Y]);
Form1->Label3->Caption=AnsiString(ucMB[X][Y]);
}
這堂課是用BCB的程式來做的
以前有別堂課的老師有用BCB來上過課
所以還算容易上手
但是有一個地方有點不知道該怎麼做
後來問了別人才了解
如何讓滑鼠隨著移動顯示RGB值
實作方式就是在顯示圖的物件上點一下再到左邊的小視窗
把標籤切換到"Event"後有個叫"OnMouseMove"的欄位
在空白欄位上快點兩下
就會在程式碼那看到一個空白的副函式
它的宣告變數中就有X和Y
所以可以利用這兩個變數去控制顯示滑鼠目前所在的位置的值
好不容易解決了問題
順便提到
LENA的圖片好正ㄏㄏ
大家看了應該也會很開心吧
第一次做影像處理的作業
還需要更了解關於制方面的事
相信下次應該會更好!
第一次做影像處理的作業
還需要更了解關於制方面的事
相信下次應該會更好!
你的文章中提到要
回覆刪除"宣告三個二維動態陣列",
可是我看報告中的程式只有動態宣告一個二為陣列耶??!!
而且, 在部落格中貼程式要很小心, 有些特殊符號顯示不出來, 例如數學式子中 "大於" 或 "小於" 符號, 都會在 html 語法中, 被當作其他意義...