常常聽到WordPress,但我一直沒用過。印象中就是很容易用的東西,聽到有朋友想自己搞個網頁的時候,我問一問他想怎麼用,突然就想到 WordPress了。所以就想說幫別人架之前,就自己來架架看吧!沒想到這麼容易,所以就順便也把我的兩個Blogspot抓過去了!
這是新的落腳處
其實我打算以後就把blog寫在那裡了,
第一是有點怕被hack…
第二個缺點是這個domain name也太長了!
至於這裡甚麼時候會復甦也不知XD
總之,新站開張,歡迎光臨!
Friday, May 1, 2009
新站開張!
Thursday, April 30, 2009
[ProcessingExh] Pond by William Ngan
Pond,池塘。
探究前的觀察。
Pond可以說是非常直覺的作品。畫面裡有很多水滴,不過我想應該是蝌蚪吧?!滑鼠就像是個可怕的玩意,當你用滑鼠接近蝌蚪們,他們會紛紛逃離。而顏色似乎是蝌蚪跟滑鼠的距離有關,越近越偏藍,越遠越偏白。
點擊滑鼠會出現一些波紋,蝌蚪們會先疑陣慌亂,然後朝著你點擊的位置邁進。等波紋消失後,又會想要回到他們自己的軌道。
作者William Ngan,香港長大到英國學習,現籍加拿大但持有綠卡,這是他的twitter(都是英文...)。個人網站取名為metaphorical,我個人覺得非常有意思,畢竟最近上設計的課常聽到metaphor這個字。他說metaphorical.net是他的線上筆記本,而他也真的把網頁做的像筆記本,但這是第四版了,前三版看起來是完全不同。在metaphorical.net上也可以看到Pond的介紹以及原始檔案下載。
作者說Pond這個作品是在模擬 "flocking befaviours" 。在Processing官網當中也有Flocking的教學,我想再會再發表一篇文章來講Flocking。在這裡先大略提一下Flocking基本的三個動作:separation, cohesion, and alignment. 雖然Ngan說那些圖案是魚拉,基本上的運作都跟探究前的觀察一樣。
下載的code是可以在processing中執行的,Ngan很貼心的在code中用註解標示了processing code的開始和結束,但基本上就是全部拉,只是要拿掉外層的PApplet。(到processing中執行時請記得拿掉setup及draw之前的public關鍵字,因為processing中不需要) 我在這就不trace code了,反正還要開一篇講Flocking!
Monday, April 20, 2009
[OpenCV] 巢狀偵測
ps. 本網誌已遷往此處,歡迎前往閱讀。
又用了一個爛名詞,巢狀偵測,nested detection。我想說的是,會有多於一次的偵測,每次偵測的結果都基於上一個偵測的結果。又要用一個好懂的例子就是先做人臉偵測,接著做人眼偵測。
對於單一物件偵測在上一篇已經提過了。所以現在只貼一小段,情境設定在確定第一個目標已經偵測到的情況下來討論。
if ( objects && objects->total > 0 )
{
//cut small area
CvRect* rect = (CvRect*)cvGetSeqElem( objects, 1 );
CvMat nested_img;
cvGetSubRect( img, &nested_img, *rect );
printf( "rect : (%d, %d)\n", rect->x, rect->y );
cvClearMemStorage( storage );
nested_objects = cvHaarDetectObjects(
&nested_img, nested_classifier, storage,
1.1, 2,
CV_HAAR_FIND_BIGGEST_OBJECT |
CV_HAAR_SCALE_IMAGE,
cvSize( 0, 0 )
);
cvClearMemStorage( storage );
printf( "rect : (%d, %d)\n", rect->x, rect->y );
if ( nested_objects && nested_objects->total > 0 )
{
CvRect* nested_rect = (CvRect*)cvGetSeqElem( nested_objects, 1 );
printf( "nested : (%d, %d)\n", nested_rect->x, nested_rect->y );
}
}
這段程式基於上一個程式稍做增加,所有nested開頭的變數(nested_xxx)都與原先的變數(xxx)型態相同。nested_classifier載入的是一個不同的模型檔案,nested_objects用來放nested_classifier偵測到的結果。原先的img經過第一次的classifier偵測結果後會先裁切,存入nested_img,再交由nested_classifier偵測。
現在來說上一篇提到的問題。我在程式中加了printf來印出rect的變數。如果成功執行了這隻程式,可以在console中觀察到rect前後的變化。再一次的呼叫cvHaarDetectObjects之後,rect的值改變了。在我看來是不應該有這樣的結果,畢竟我用了一套新的變數來做第二次的偵測。而第二次的cvHaarDetectObjects居然影響到了第一次的結果。(第一次呼叫cvHaarDetectObjects在這個if區塊之外,請參照上一篇的程式)
由於nested_rect的座標值是相對於nested_img的,所以rect的座標值是基礎,不能不要,不然也還原不了在圖片上該有的位置。所以為了避開這個詭異的現象,要另外使用變數將值複製過去才行。 Leia Mais…