2007年7月10日星期二

開源軟件計劃 - QRCode Reader

在上次Linux the Gathering活動上談了些有關於Computer vision的技術,當然不能不提的是QR Code,雖然已經有開源的程式庫,但欠卻一般應用,計劃內所提供的只有幾個簡單的範例程式,除了MIDLet那個以外都不能讀取鏡頭影像,那就沒有什麼 用處了。概然最近都是在寫V4L2的程式庫及其他元件,不如試一試把這幾個東西整合一起,為這個程式庫做個Linux的介面吧。

花了2日時間,作為Proof-of-concept的實驗品出來了:

因為Open Source QRCode library本身是用Java撰寫,而怎樣用Java存取硬件,或者把V4L2的API做給Java,相對要花較長的時間,所以在設計上有些取巧的地方。

首先是用GCJ把QRCode Library編譯做native的object code,再用gcjh弄出C++要用的標頭檔,主體是一段不太長的C++程式碼,負責經Rvtk ( Realtime Video Toolkit )調整鏡頭參數及讀取影像,還有是建立gtk+介面。當一切準備就緒便從鏡頭讀取影像,抽出觀景框裏的內容,最後交給QRCode Library處理。

當然啦,在那麼短時間內做出來的東西自然存在不少問題,甚至是經常SEGFAULT。所以先把消息發給較熟識的OSS開發者如Anthony Wong等人作討論。最後經Roger So指點,再花若為2天的時間,終於完成了第一個Alpha版本。

QRCode library本身的處理速度就相當之迅速,而整合後的就準確度算蠻高的,只是還未開始弄亞洲語系的支援,暫時只能解讀ASCII的條碼,介面也沒怎樣特別考慮過。會先休息一段時間,思考一下跟著的計劃。

另外Debian SID的GCJ有點問題,據體原因並不太清楚,嘗試用來編譯QRCodeDecoderCUIExample(指令模式範例),可是ImageIO無法運 作,只會回傳null。 而gcjh也同樣有問題,無論是什麼輸入,最終都只能製出空白的header檔。

相反在另一部安了Etch的電腦就一切正常。當然不排除是我自己部機的問題,最好有人再幫我試試 :D

今天先寫那麼多,程式碼的下載及編譯程序之後再補上。


2 則留言:

匿名 說...

不好意思!可以分享你寫的這個程式嗎?因為正在學習相關的資訊!"ps7531@hotmail.com"謝謝!!

匿名 說...

請問作者程式碼還有留存嗎??小弟最近也在研究這部份~不知道可不可以跟你索取

sky810675@gmail.com

Creative Commons License
本網誌Ben Lau製作,以共享創意署名-非商業性-相同方式共享 3.0 香港 授權條款釋出。