2009年10月2日 星期五

hw1



心得:
老師上課時其實已經示範的很詳細了,所以回家很輕鬆就做出開啟圖片檔,我在程式碼裡也有做讀出RGB,只是不會用直方圖秀出來,所以就沒弄在畫面上了,希望可以更深入學BCB這個程式,有很多功能尚不知道用法。

hw1


這是顯示的結果,太久沒有碰BCB , 有些語法都忘了還回去看以前的作業和老師的blog
還有上網查一些BCB細碎的東西,這只是先照老師所說的讀影像檔,然後存到一個二維正列
裡,我目前只有做到這裡,直方圖還在研究中,現階段還沒有用出來,以上是這次的作業

hw1 96360652諶德軒













聽說題目是:秀一張影像到二維陣列中

應該是這樣沒錯吧?

由於沒修過BCB

導致一開始就陷入發呆的情況

看著範例跟學長作業的參考下

結果還是卡在開影像視窗

原來是我沒有加"開圖檔的元件"

總算能開影像了

結語就是:我的第一份作業搞得像殘障一樣。

hw1


首先先放上去這次作業的執行結果


由於之前有修過老師的課

對BCB不是很陌生

基本的操作都還是記得一些

這次的題目是: 開啟並讀取一張影像到二維陣列中

剛開始沒有什麼頭緒

不過後來問同學以後 就會把基本的讀取圖片 和顯示RGB給顯示出來

這禮拜拿到書以後應該可以更快進入狀況

HW1


摸頗久的不知道有沒有成功,

所以就抓一個坐標的RGB秀一下,

原本是想學最初第一個人教的用THART用直方圖表示看看,

但是摸不出來,不過意外看到另一個抓RGB的code(就是後來學的ScanLine)

好像那個比較多人用的感覺(且真的快好多)

不過首次的重點

應該是BCB操作

學會

當要用目錄要拉MainMenu

當要開圖檔要拉物件OpenImageDialog
因為要用到圖還要拉物件Image

內部程式
OpenPictureDialog1->Execute()

Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);

再來就要將讀入的圖放入陣列以待後續處理

由於圖是個2維陣列

要設定長寬,不然陣列不知設多大

Image1->Picture->Height;
Image1->Picture->Width;

又因為像素有RGB三顏色,所以要宣告三個2維陣列去存

以下列程式取得RGB
GetRValue(Image1->Canvas->Pixels[j][i]);
GetGValue(Image1->Canvas->Pixels[j][i]);
GetBValue(Image1->Canvas->Pixels[j][i]);

放入分別先前三個2維陣列。

至於顯示RGB部分後面直方條程式那時候才有弄

也就先介紹

再Image1物件的事件找ImageMouseMove點兩下

將滑鼠移動(X,Y)

丟給Label物件顯示

Label1->Caption=Matrix_R[X][Y]
Label2->Caption=Matrix_G[X][Y]
Label3->Caption=Matrix_B[X][Y]

這樣就完成了!!

2009年10月1日 星期四

HW1

顯示結果:
     開啟bmp檔
     顯示結果

心得:
  在本次作業中,一直擔心自己做不出成果來,首先擔心沒有BCB軟體做作業,後來借到了,但又因為在開啟圖檔時總是顯示不出來,後來我又研究了一下學長的作業說明,也在仔細觀看過一次程式碼後,發現加入幾個宣告,程式就可執行成功了!本來還常是開啟兩個圖檔,多增加一個開啟圖檔的按鈕和圖,但是試了的結果是兩個開啟的檔案都在第一個秀圖區,第二個開啟圖檔的程式碼我有做過修改,但就是無法顯示在第二個秀圖區。
因為沒修過BCB,對於BCB操作我研究課本和圖書館借來的書籍以及網路上的教學好久,還是覺得不太懂,然後還發現前面幾個同學連RGB值或值方圖都秀出來(這是打擊!),我都不太懂這部分,題目顯示『開啟並讀取一張影像到二維陣列中。』,不Show值方圖和RGB值應該沒關係吧?

2009hw1

本課程第一個作業是: 開啟並讀取一張影像到二維陣列中。

流程是:
先讀取一張圖片,然後宣告三個二維陣列來儲存這些色彩資料。

遇到的問題:
一開始最先遇到的問題,是不太懂bcb的語言,像是把值用label顯示出來。
後來查了一些資料後,就比較會寫。

結果:
(開啟時)

(開啟後)


OpenPictureDialog1->Execute();
是選定希望開啟的影像
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
將影像顯示到Image1這個影像物件中

IMatrixR[i][j]=GetRValue(Image1->Canvas->Pixels[j][i]);
將每個像素的值讀出
存入二維陣列中


這次作業因為在課堂上老師有一步一步的示範怎麼做
所以在課堂上跟著做就做出來了
也介紹了一下一些按鈕
才知道怎麼用


後來寫心得時看到很多人的心得上面有秀出RBG值
本來想說第一個作業是只有開啟影像和讀取影像到陣列
以為是自已搞錯了
就上課問了老師
意外學會了用OnMouseMove的用法
是在Event的地方
點二下就進去了
下面是滑鼠移到哪裡就秀出RBG值:

HW1


之前有上過BCB相關的課
但是有點忘記了
用二為陣列把RGB的值顯示
 
 需要想一下才能打出來
上面的圖就是秀出來的結果

HW1



這次的作業在之前的課裡有上過,不過有些還是略微忘記@_@。

不過還是努力打出來了~~

大致上是先建立一個二維陣列來放圖片的RGB值,再用一個雙層迴圈把RGB值讀出放到edit中顯示出來。

因為一直不確定圖片的真實RGB值是多少...所以一直在嘗試著把圖案的R質萃取出來。

但是一直無法成功....所以就漸漸懷疑自己寫的程式是不是有誤

經過找尋和debug後,才發現原來在設定的時候沒有把圖案的高跟寬取出...所以才會無法成功。

後來設定好以後就可以萃取出R值了。

(第二張圖片是剛開始錯誤的程式所做出來的成果,第一張圖片則是修改後的成果順便附上萃取出R值的圖案)


2009年9月29日 星期二

HW1 - 開啟並讀取一張影像到二維陣列中

這次作業在之前的多媒體導論就已經有寫過,
所以基本上就是拿來沿用並加入上次的練習作業的其中之一"顯示RGB直方圖."

程式流程:
1.載入圖片後取得其長寬值,並將長寬值顯示出來.
2.以其長寬值宣告一個二維動態陣列.
3.用Get(R,G,B)Value的指令將其每個Pixel的值讀出來,
   並以雙for迴圈的方式存入二維陣列.

直方圖部分:
1.宣告三個一維陣列(這裡可彈性修改),去統計RGB出現的次數.
2.以TChart將直方圖顯示出來.

程式畫面:















執行結果:















如何得知我的直方圖是對的呢!?
附上Picasa的RGB直方圖:


















以上.