顯示具有 93360965 鄭竣鴻 標籤的文章。 顯示所有文章
顯示具有 93360965 鄭竣鴻 標籤的文章。 顯示所有文章

2010年1月14日 星期四

HW8

這學期選修了數位媒體概論,都延畢了為什麼還要選這個呢?因為我還是比較喜歡多媒體的東西,課程一開始知道要買BCB的書,但BCB的書我實在太多了,所以就沒買書,上課的時候到系辦借,不然就是真的很需要靠書來寫作業才借回家看。書比別人多好幾本就是有個好處,可以互相查閱比較,程式我都背不起來,但我會查,在每一本程式書上,我都貼滿了標籤,對我來說,程式的書籍是我的工具書,我真的不喜歡用背的。

這學期老師從影像到聲音,聲音算是我比較少碰的,曾經我修過趙和昌老師與徐熊健老師的影像處理,趙老師著重於影像處理,而徐老師重於創意,在影像處理學會了將影像轉換成為灰階、黑白、反相、處理對比等,也學會了遊戲的製作與想法創意,而老師這堂課,我學到了以往學不到的影像型態,之前只知道老師說甚麼我們就做甚麼,老師範例塗塗改改就交了,但這次把以前自己摸索的影像型態經過老師講解,更了解了。

其實一開始我從來沒用過fopen、fseek、fread這三個語法,不過學會了這三個,不僅讓以前的程式更短,且更容易尋找,對於BCB學習,我的障礙就在於不知道我的物件指到哪裡了,一堆箭頭,有時候真的不知道自己的物件跑去甚麼地方了。每一次的作業,也像以前一樣,從頭到尾都要串聯起來,這樣就能變成一個雖然陽春,但還算面面俱到的影像處理軟體。

雖然這次又不能順利畢業,但年級越高,真的領悟的越多,總覺得以前好傻好天真,只求過關,關關難過關關過,一路走來,覺悟的時候,都已經大四了,但卻也知道老師們的用心,同樣都在上課,我聽到的感覺就跟學弟妹不一樣,到現在才知道"學以致用",似乎太晚了點,四年下來,除了老師的遊戲設計,和多媒體學程的一些課程,我發現是不可能會有學生的創意,當然也感謝老師可以讓我們自由的發揮,天馬行空的想像,我想,創意始終是推動科技進步的一個重要因子。希望老師能繼續您的教學風格,我真的覺得這樣互動真的有激發學生們思考。

HW4

01 灰階02 二值化03 二值化微調04 LFP(低通)05 邊緣偵測

這次的作業跟作業三差不多,只是當初問題卡再掃圖進來的時候必須再調校,之前遇到的問題在課堂上聽完老師講解後,就沒甚麼問題了。

接下來除了灰階就是自己加進去的東西了。

首先第一張圖,灰階轉換,這部分沒甚麼問題,效果看起來還不錯。

第二張與第三張圖是二值化,說穿了就黑白啦!但又跟黑白又有點不同,再底下的Toolbar可以看到,數值越大,黑色的比例就越多,相反的數值越小,白色的比例就越高。

第四張圖,LFP轉換,也就是所謂的低通濾波,這是之前影像處理學的,就把之前的程式碼也放進來用。

最後一張圖是邊緣偵測,本來我是想寫成反相,就是像底片那樣,但我筆記翻來翻去就是翻不到相關的資訊,但看到這個覺得挺酷的就把他加進來囉!

HW5

image

這次作業五其實難度不算太高,每次上課時除了老師講解之外,其實都會在請教李彥頡,畢竟他是用功寫程式的同學,這次作業的問題,在於排序,先前的作業三有講到如何把RGB值取出,但這次只利用GIF裡的色盤,將色盤取出後,我第一個遇到的問題就是色盤是亂的,沒有任何排序,後來問了阿吉,才知道說排序有分好幾種,有RGB的排序、色相排序、彩度排序跟亮度排序,嘗試幾次後發現還是亮度排序看起來比較順眼,其實我應該要做一個選項讓使用者可以照自己的喜好程度挑選排序方法。

2010年1月7日 星期四

HW7

HW6

作業六是聲波顯示,先來解釋圖片好了。

A圖是初始畫面,B圖是開啟檔案顯示聲波的畫面,但還是WAV檔案。

C圖是底下Toolbar的卷軸功能,用的是之前設計打磚塊的概念,每往右拉一點,影像就一直貼一直貼上去,就是覆蓋覆蓋。照片是在拉的那一瞬間拍的,我到現在還沒找到可以讓他一口氣就跑出來的方法,他還是用掃描的方式在跑,由左邊掃到右邊。

D圖跟E圖則是XY軸的大小。

程式碼是我找以前上課的筆記,以下是程式碼。但有些程式忘了意思....就照寫...忘記了當初判斷為什麼會那樣寫...考完是再來研就好了。

void show(void){
NeoSoundisplay->Refresh();
NeoSoundisplay->Canvas->TextOut(10,400,IntToStr(NeoSoundisplay->Srb->Position) );

divx=StrToInt(NeoSoundisplay->Edit1->Text);
divy=StrToInt(NeoSoundisplay->Edit2->Text);

NeoSoundisplay->Canvas->MoveTo(0+dx,-data[0]/divy+dy);
NeoSoundisplay->Canvas->Pen->Color=clBlue;
for(int i=1;(i<NeoSoundisplay->Width*divx)&&(i<(FileLen-dd)/2-1);i++)
NeoSoundisplay->Canvas->LineTo(i/divx+dx,-data[i+NeoSoundisplay->Srb->Position]/divy+dy);
}
//---------------------------------------------------------------------------
void __fastcall TNeoSoundisplay::FormCreate(TObject *Sender){
bool open_flag;
int handle;

if(open_flag==true) {
fclose(inf);
}
inf=fopen(file_name,"r");
open_flag=true;
handle=fileno(inf);
FileLen= filelength(handle);

if(feof(inf)) {
fclose(inf);
open_flag=false;
}

data = new short[(FileLen-dd)/2];

fseek(inf,dd,SEEK_SET);
fread(data,sizeof(short),(FileLen-dd)/2,inf);

MediaPlayer1->VisibleButtons=Mplayer::TButtonSet()<<btPlay<<btStop<<btPause;
MediaPlayer1->DeviceType=dtWaveAudio;
MediaPlayer1->FileName=file_name;
MediaPlayer1->Display=f14_4_2;
MediaPlayer1->Open();

if((FileLen-dd)-NeoSoundisplay->Width*divx<0)
Srb->Max=0;
else
Srb->Max=(FileLen-dd)/2-NeoSoundisplay->Width*divx;
}
//---------------------------------------------------------------------------
void __fastcall TNeoSoundisplay::MediaPlayer1Click(TObject *Sender,
TMPBtnType Button, bool &DoDefault){
if(!MediaPlayer1->AutoOpen)
MediaPlayer1->Play();
}
//---------------------------------------------------------------------------
void __fastcall TNeoSoundisplay::btnShowWaveClick(TObject *Sender){
show();
}

HW6

HW5

OK!!真是完美!!!因為我懶得一張一張丟...所以就集合成一張囉!!

這是新的作業,把音樂檔的內容資料顯示出來,用的方法還是fread的那三個方法,A圖是剛開NeoMusic的初始畫面,B圖是開啟聲音檔的畫面,大家可以看到我只能開啟一種聲音檔案類型,因為檔案類型很多很雜,所以就只開啟一種檔案,正要開啟的時候,才發現我電腦裡只有MP3檔案,WAV檔在轉完MP3後就全刪了XD,所以只好去老師的網站下載囉!

開啟檔案後就是C圖,檔名太長所以超出去了,開啟檔案後,按了右邊的播放鍵,酷斃了!!!D圖就是播放時,他會變灰色,你不能按他,只能按STOP,就變是回到E圖。所以鄭重的為大家介紹這陽春的NeoMusic播放軟體,可以讀取聲音檔詳細資料,但只能讀wav檔,內含播放、停止,但無暫停、快轉、倒帶的功能。

2009年12月23日 星期三

HW3





目前程式對於開啟與儲存影像功能只對BMP檔案有效,JMP影像可以讀取,但儲
存還不算成功,因為儲存的時候有點小問題,好像"未定義成功"的樣子。
程式對於讀取影像資料無誤,只是感覺好像少了甚麼。
在RGB色彩上也有所回應,目前可以把滑鼠游標的座標讀出來並可偵測圖像上的
RGB值並顯示,加上了游標上那點的顏色顯色。

程式的介面較為簡單,除了TOOLBAR的兩個製作外,還有了快捷建。
目前正著手分頁的製作,對於IMAGE指向其他分頁,並做影像處理的部分有點卡
關。因為還不太清楚程式的指向到底指去哪了,編譯會過,但在黑白、灰階、反
相的分頁上,只有黑白目前有顯示,灰階跟反相的IMAGE不知道跑去哪了,跑不
出來。

目前還修編中,希望這個程式能夠更完善,感覺加了這些東西進去,都筆小畫家
好用多了。

因為電腦從XP變成WIN7,還有很多東西不習慣....
且之前的檔案不小心刪掉了,沒備份。
因此,旋轉、複製區塊、貼上、裁減、畫筆、放大與縮小的功能都沒了啦~~~
其實還蠻想哭的...
只記得備份寫真集,卻沒備份作業。像智障一樣.....連其他作業我都忘了備份Orz

2009年11月4日 星期三

HW2

前兩週身體去檢查,照了胃鏡看了診斷報告,是胃潰瘍啊!
在此呼籲大家,正常飲食、多吃蔬果、少熬夜,免得跟我一樣。
醫生說再嚴重一點就是胃出血,要住院,且會提高罹癌機率。
請大家好好愛護身體。

接下來就是本週作業課題

目前,網路欠佳,圖片根本無法上傳。
(房東問題...且網路線被貓咬好幾個洞...傳圖會卡在上傳,就先打心得,日後補上)
因為阿吉的提醒,所以在上課的時候就把fopen、fseek、fread給搞定,老是忘了宣告辯數跟標頭檔,之類的壞習慣,一定要改過來。現在,關於BMP檔案的型態與內容都可數據化,因此在做各種BMP圖檔的轉換就更加明瞭。之前把老師交的黑白和灰階寫入同一個Form了,讓我有種在做影像編輯軟體的FU,但都忘了程式要放呆,有時超出限制,電腦就整個大當機,搞到我都快哭了。

再來就是我自己加進去的東西
加入了翻轉影像,水平翻轉與垂直翻轉
之前使用Image1->Picture->Bitmap->Width(Height)來了解影像的長寬,而我利用了I[x][y]與O[x][y]來代表翻轉前與翻轉後的影像在[x][y]像素的數值,0<=x<=Width-1,0<=y<=Height-1,
他們之間的垂直關係為
O[x][Height-1]=I[x][y]
而水平翻轉的關係為
O[Width-1][y]=I[x][y]

其中我是使用Canvas元件來處理
步驟是
1.產生新Bitmap元件
2.將TempBitmap指向這元件,因為要儲存轉後結果
3.將TheBitmap只向原始影像
4.將原始影像先複製到目的影像
5.利用Canvas執行翻轉
Width=TheBitmap->Width;
Height=TheBitmap->Height;
for(int y=0;y< Height;y++)
 for(int X=0;y< Width;x++)
 TempBitmap->Canvas_>Pixels[x][y]=TempBitmap->Canvas_>Pixels[Width-1-x][y];
6.在將結果傳回原始影像中
7.在去除TempBitmap指向的Bitmap元件

上述就是我的水平翻轉囉!!
感覺我根本就是在做小畫家,又回到我的專研題目了說.....

2009年10月7日 星期三

如何將寫好的BCB程式移植至未安裝BCB之電腦執行

如果大家要把BCB程式放到沒有安裝BCB的電腦裡去執行,往往都不能執行。
以下是將BCB包裝好,可以到其他電腦去執行的方法。

Project -> Options -> Linker-> Use dynamic RTL 打勾去掉
Project -> Options -> Packages -> Building with 打勾去掉

將上述兩個打勾去掉就可以囉。

HW1



這是我這幾天自己開始著手做的,不過遇到一點小問題還請大家幫忙解答一下。

------------------------------------------------------------------

OpenPictureDialog1->Execute();if(OpenPictureDialog1->Execute()){
Image1->AutoSize=true; Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
}
-------------------以上是OpenFile的程式碼
-----------------------------


Filter Etidor的檔案類型設定為JPG、JPEG、BMP檔三種。


但打開BMP檔非常順利,如下: 這是開啟JPG檔後所出現的警示。 所以我現在只能打開BMP檔卻不能開啟JPG檔。有人可以幫忙解決嗎?