2012年10月9日 星期二

How to use javacv on Win7 with Eclipse IDE

自從我接觸電腦視覺、數位影像處理以來

只要碰到OpenCV有關的東西頭就很痛

這個開源函式庫最討人厭的地方就是...

每個版本的資料夾路徑都長不一樣

每個版本的安裝方法都不盡相同

更別說每個 IDE 的連接方式了(其實應該差不多,但你知道每個IDE要叫出連接的選項總是放在不同地方)

一般開發openCV國內外大多推薦Visual Studio

逍遙文工作室 有針對各種不同版本做很詳細的安裝說明

但我們今天要講的是javacv

javacv是甚麼呢?

因為opencv這套函式庫是給C or C++用的

也就是說為了要把這麼給力的函式庫讓java也能用

故有人就弄出javacv這個東西

根據小弟安裝經驗

版本問題貌似解決了但實際上不然

因為你灌的javacv版本必須跟你的openCV完全match

不然就會跟小弟一開始一樣一直噴出錯誤訊息甚麼Unsatisfied Linked Error....

接下來是圖文教學,希望看過之後能幫助更多人省下時間(開發者最痛恨的事情我想不是debug就是開發環境的建置)



0.現在假設你已經灌好openCV了,在 Visual Studio上用得好好的,突然被告知要用java開發一樣的東西,短時間內你不可能自己寫出一套java版的影像視訊函式庫(如果你真的幾天之內能生出來那這篇文對你來說就是廢文可以甭看了),這時候你就需要這玩意兒了

1.重要:確定你的openCV版本下載適當的javacv版本

openCV 2.4請到 http://code.google.com/p/javacv/downloads/list 下載 2012/7/21所釋出的版本,binary版就夠了,除非你要改他的source code那就載src版

openCV 2.3 請下載 http://javacv.googlecode.com/files/javacv-bin-20110705.zip

下載完成解壓縮放到你喜歡的地方

2.打開 Eclipse,新建一個專案。沒有意外地建置完成,在專案名稱處按右鍵->Build Path->Add External Archives



3.把javacv解壓縮資料夾內的jar檔通通加進來


此時該專案的Referenced Libraries就可以看到剛那些加入的jar檔了

4.接下來測試是否安裝成功。在該專案內創建兩個class,GrabberShow.java 以及 TestGrabber.java,code如下

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

GrabberShow.java:

import static com.googlecode.javacv.cpp.opencv_core.cvFlip;
import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage;
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.VideoInputFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import java.awt.image.BufferedImage;
public class GrabberShow implements Runnable{
//final int INTERVAL=1000;///you may use interval
    IplImage image;
    CanvasFrame canvas = new CanvasFrame("Web Cam");
    public GrabberShow() {
        canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    }
    public void run() {
        FrameGrabber grabber = new VideoInputFrameGrabber(0); // 1 for next camera
        BufferedImage  currentFrame;
        int i=0;
        try {
            grabber.start();
            IplImage img;
            while (true) {
                img = grabber.grab();
                if (img != null) {
                    cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise
                    cvSaveImage((i++)+"-aa.jpg", img);
                    currentFrame=img.getBufferedImage(); //if transforming to java BufferedImage is required
                    canvas.showImage(img);
                }
                 //Thread.sleep(INTERVAL);
            }
        } catch (Exception e) {
        }
    }
}

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

TestGrabber.java:(main)

public class TestGrabber {
public static void main(String[] args) {
       GrabberShow gs = new GrabberShow();
       Thread th = new Thread(gs);
       th.start();
   }
}

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


5.Run it! 成功的話會看到視訊畫面,你可以對著畫面自High一番然後大叫:我終於搞定javacv了



祝coding順利

2012年9月12日 星期三

我看清大屠夫案例

這幾天鬧得沸沸揚揚的清大屠夫自白

標題殺人不說

一堆人把重點放在什麼台灣薪水低、國內環境不好blah blah

這種評論在哥看來,都是傻逼

重點是一個念清大經濟的

應該很清楚甚麼叫"機會成本"吧?

如果有人不知道這詞的想必連一般程度也沒有

也不配看這篇文章了請自行關閉吧



以下言論可能刺激了點不舒服隨時關掉

要去澳洲甚麼遊學打工

根本不必念到清大,更遑論銀行理專呢

首先我要說這種故事一點也不稀奇

台大電機畢業去賣雞排的也有耳聞

個人選擇不同罷了

您要羨慕他你也可以去澳洲當屠夫呀~哥支持你走自己的路

要我說在這社會上生存

就靠兩個力

要馬就靠個人專業能力、要馬就靠耐力

最廢的就像現在一堆三十幾歲了還不出去工作整天待在家裡蹲的

既缺乏個人能力,又缺乏耐力

這種人成天抱怨時機歹歹,每天蹲在家批評台灣就業環境差

批評完環境差再來批評教育制度差

也不想想自己究竟有甚麼狗屁技能可以就業

不想想為什麼自己過去沒在教育體制下存活下來

生存力這麼低,去國外就會比較好?

就沒人跟你競爭了?

你還幻想去澳洲回來可以當英文老師呢

那菲傭泰勞也能開國文家教班囉?





而說到耐力呢~也因人而異

像是去澳洲打工這位老兄缺乏對薪水的忍耐力

但是對於被歧視的忍耐力就挺高的(所以他不是草莓)

因此他選擇去澳洲賺錢,在忍受被白人歧視的條件下

回到先前提到的兩個力

要馬你就忍受低薪,在台灣當爺

要馬你就去國外,被別人當鱉

看你對哪種耐力較足

沒有犧牲,沒有所得

清大哥的夢想是賺錢他現在也的確是在實現的他第一桶金的夢想

有人去澳洲卻是幻想

幻想去澳洲打工旅遊是浪漫的旅程呢~幻想那兒是天堂

去了眼界會變廣~是不是電影直升機高空場景看太多了呀?



終於要進入正題了

正題就是國家栽培了這位清大經濟畢業生

一個國家教育了20多年,大學念的是所謂台大四大名校,也是有聽過的系、

出來的學生甘願去當台勞

握曹台灣這輩年輕人的競爭力就只有如此嗎

他說的台勞潮不是瞎說,我認識的就有兩個朋友都想當台勞

一個已經去了一個還在計畫

難道我畢業後也得去澳洲玩開心農場?

可悲呀

再這樣下去不用對岸打過來我們自己就垮了

前些年宏達電起來時氣勢如宏,本以為是台灣新希望

想不到幾年不到的時間人手一支 4S, galaxy

在捷運上看看有誰在拿HTC?

台灣產業發展到底還能給年輕人甚麼希望?

懇請政府給我們一個明確的答案

不然我們自動請求澳洲把我們給併了

抑或等對岸把我們給併了



P.S: 台灣人,請團結~

如果你家裡經濟沒有困難

請不要把理想設為去澳洲當勞工

那我會說你這輩子TM不過就是個當勞工的命

浪費家裡的錢念大學做什麼呢?

2012年6月12日 星期二

Marshall Major 開箱文

正面
從很久以前我就想升級我的聽力設備,無奈實在沒幾個看得上眼又買得起的耳機,鐵三角低階太鳥高階太貴....beats is for 傻B等等...

前些天在5 sense寫作業被兩個小鬼的尖叫聲吵到受不了才發現有買個封閉式的迫切需求,小孩明明就是一種可惡的生物,動不動就大哭大鬧還會不斷偷走你的錢,怎麼會有人覺得可愛呢?   雖然我小時後也如此就是了。在問過一堆人的意見,逛了一堆網拍後很幸運地...
被我找到音箱大廠Marshall居然有出耳機,查了一些評價後沒甚麼考慮就買了



Marshall是做吉他音箱起家的,歷史悠久。有在玩團的、陪跑練團室的、或者常聽演唱會的應該都不陌生,雖然說做音箱跟做耳機應該還是有一定程度的差距,但就衝著Marshall的名號再加上價格非常可以接受,我還是買單了,因為我是假Rocker(NT.3700)

樂天商場的到貨速度都很快,所以口袋裡的小朋友也因此去得很快,上圖如你所見就是Marshall Major的包裝,稱不上精緻到讓人想再三撫摸,但我認為所謂大廠做出來的就該長這樣

底部


背面





中國製

右上角是保證書














拆開後的樣子如右圖

好啦其實是我已經全部拆完再把它裝回去,所以線綑得有點亂,總之他非常難拆

這張圖隱約可以看到頭框內側有Dr.Jim Marshall 的簽名,我想是噱頭吧哈哈,細節就不多拍了,我只能說他做工上我認為非常精細,跟別的耳機擺在一起識別度也很高








耳罩部分摸起來是皮革材質(荔枝皮),上面的Marshall Logo是立體的














導線部分設計很特別,有玩吉他或Bass的一定很有親切感,我蠻喜歡這個設計









插上去之後真正考驗就來了,究竟搖滾大廠的耳機出來會不會是一坨屎?就像搞音樂的Jay錢太多拍了一堆沒人想看的爛片,讓人想大罵Jay還是乖乖寫歌,Marshall做音箱就好別搞耳機這塊呢?

未聽之前先猜測Marshall耳機應該會強調中頻讓聲音聽起來厚度十足,但真正插上去後我選了Alter bridge的open your eyes,Kings of Leon的 Use Somebody來聽發現不是這麼回事,先說為什麼選這兩首呢?原因是因為我很愛這兩首的編曲

聽完後的心得是:他不適合用來聽任何音樂,為什麼這麼說呢? 因為她不強調任何頻,中高低全在同一層上,沒有一層是特別凸顯的:BASS沒有震到心坎底、Chord沒有試圖震破耳膜、solo也沒有讓人爽到快升天。

但最棒的是他是一款我認為非常優秀的監聽耳機,因為每一部的聲音都聽得一清耳楚,非常適合拿來抓歌、編曲、錄音監聽、調教效果器,我特別講一下調校效果器好了,這款耳機強調可以承載極大的Gain,所以絕不是問題。

最後來一張靜靜躺在我衣櫃的圖