顯示具有 認真的研究專題 標籤的文章。 顯示所有文章
顯示具有 認真的研究專題 標籤的文章。 顯示所有文章

星期二, 2月 03, 2015

朝聖:Johns Hopkins Hospital

Johns Hopkins,當過醫生的應該都有聽過,傳說離我家不到1小時車程。竟然來到美國一年多,要離開前才來朝聖。

星期五, 11月 14, 2014

如何把檔案/資料夾 "置項" 或 "置底"

現在的硬碟越來越大,大家的硬碟應該塞不滿,但是東西就是越來越多。

想辦法分類,卻又因為分類的結果,有些名字就是長這樣,硬是被塞在你不想塞的位置。能不能前面用個符號就可以置底或置頂。置頂ok,只要塞個 "~" 或是 "^" 就行了,但是置底呢?

第一步,我翻出ASCII表,找到在 z 的後面依序是:" { ";" | ";" } ";" ~ "。
但是在 mac的 osx下面,仍舊被丟到最前面去。看來 mac的檔案排序不是照著 ASCII來的。

所以,第二步,就是問 Google了。
很快的,找到了這篇文章,很明白的顯示了 MAC檔案排序的方法。它是把符號先排,再排文字,而文字長得像的就穿插在26個英文字中。例如 t 和™。



星期五, 3月 07, 2014

最後,mexopenCV 在 matlab下一個簡單的實作

我的mexopenCV,經過前置作業,error的解決,終於編好了,可以用了吧??

一在matlab run下去,就出現傳說中的Invalid MEX file。差點拿電腦起來砸!!!
不過,這個錯誤在之前爬文時就有看見,所以就是我的openCV版本太多,compile失敗太多次的結果吧。
回到/Applications/MATLAB_R2013b.app/bin/maci64 中,一不作二不休,把目錄下的所有 libopencv___.dylib全砍了。
終於,它乖乖的可以在matlab下執行了。

我現在執行的是東大的code,不過我個人把它修改過了,將兩個code連結起來,就可以啟動camera,同時做人臉辨視:

% Load a face detector and an image
detector = cv.CascadeClassifier('/Users/chaoh2/Documents/MATLAB/haarcascade_frontalface_alt.xml');

% Connect to a camera
camera = cv.VideoCapture();
pause(1);

for i = 1:100
% Capture frame
frame = camera.read; 

% Preprocess
gr = cv.cvtColor(frame, 'RGB2GRAY');
gr = cv.equalizeHist(gr);

% Detect
boxes = detector.detect(gr, 'ScaleFactor',  1.3, ...
                            'MinNeighbors', 2, ...
                            'MinSize',      [30, 30]);
% Draw results
imshow(frame);

for i = 1:numel(boxes)
        rectangle('Position',  boxes{i}, ...
                  'EdgeColor', 'g');
end
    
pause(0.001);
end

camera.delete;
pause(1);
close all

突然有了小小的成就感,不必砸電腦了。

在 Matlab 上加值 mexopenCV 來使用 openCV的功能

我在前一篇,已經詳細的記錄了大部份要compile mexopenCV 的前置工作,但是在我下了下面的命令,還是遇到了error。
mexopencv.make('clean', true);
mexopencv.make


它一直出現類似:
Undefined symbols for architecture x86_64:
  "cv::merge(std::vector > const&, cv::_OutputArray const&)", referenced from:
      MxArray::toMat(int, bool) const in libMxArray.a(MxArray.o)
  "cv::split(cv::Mat const&, std::vector >&)", referenced from:
      MxArray::MxArray(cv::Mat const&, mxClassID, bool) in libMxArray.a(MxArray.o)
  "std::string::compare(char const*) const", referenced from:
      MxArray::toRange() const in libMxArray.a(MxArray.o)
  "std::string::_Rep::_M_destroy(std::allocator const&)", referenced from:...........
............

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

    mex: link of ' "+cv/CamShift.mexmaci64"' failed.

make: *** [+cv/CamShift.mexmaci64] Error 1


的錯誤。

星期一, 3月 03, 2014

非常的sad,mac上在 Matlab 上加值 mexopenCV 遇到一大票的問題

裝完simpleITK後,現在想來裝看看openCV。畢竟openCV有更多的resource可以參考,似乎在快速建模方面,也比ITK有效率。由於我還是在matlab下工作,我選擇了mexopenCV來使用。
先講我的環境,我用的是macbook pro,osx 版本是10.9.2,我的matlab一開始是2013a,後來換成了2013b。

1. 先安裝openCV

果然跑不掉,還是要先安裝openCV。

一開始傻傻的下載source自已make,自已complie,後來高人指點,用macports或是homebrew。雖然一些網站,和日本東大強者的網頁都是使用macports來安裝。但我的朋友建議使用homebrew來安裝。畢竟homebrew不需要用sudo就可以安裝程式。(另外發現,homebrew和macports也可以安裝ITK喔!)

在shell中輸入以下指令來安裝homebrew:
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

然後再輸入:
brew tap homebrew/science
brew install opencv

等個幾分鐘,openCV就裝好了。

星期四, 6月 06, 2013

Python 沒有 switch - case

雖然在用 Python,但還是算初學者,一堆指令的用法和細節,都常常要上網找語法來用。這次突然翻到,Python 沒有 switch - case,喔喔喔!!有人整理過各種程式語言的switch - case,想不到連古老的COBOL 85也有類似的語法,更不用講在Python之後的Ruby或Perl了。
我是還沒寫到這麼高階的功能啦,不過看看別人怎麼處理這個問題也好。其實,書上會寫,要用if...elif...elif...else來處理這個問題。但是也有人想直接改別人的c code或php code而不要重寫,所以才會想出這些處理方法。
主要的參考網頁為 azalea says及 ActiveState Code,其實可以看看ActiveState Code下面的討論串,原來一個簡單的問題,其實有蠻多不同的創意解決方案,而不是教科書上寫的單一教條。

第一個方法是用Dictionary,第二個方法其實也是用Dictionary,再加上lambda。第三個方法就比較貼近我想的,直接寫一個 class來處理,以下的code,是2005年Brian Beck 就寫好的,來自於ActiveState Code,在此宣告他們的版權。

星期六, 1月 12, 2013

升級公務機:LG Optimus L3 E400,成為 ICS的一員

上次已經介紹過這台公務用手機,LG Optimus L3 E400,了。也知道這是一台便宜貨"入門"手機。配上 512MB的 RAM及 1G的 ROM,實在是沒什麼空間可以裝東西。所以,想說來試看看改成ICS,至少安兔兔上的資料,ICS的效能似乎是比較好的,而且ICS的介面似乎也比較優。剛好查到真的有給 E400用的CM9,就來試看看。基本上我是花了4-6小時才搞定來龍去脈。在這兒寫出來的目的,是讓大家不用多花4小時,短短20分鐘左右就可以讓 ICS 上身 裝上 E400。

醜話先說在前面,刷機有一定的風險,我能成功不代表你也可以無風險的照做沒事情;使用非原廠提供的系統可能會喪失保固;請必須了解到刷機完全是自主行為,且自己可以負擔成功或失敗的所有風險。

第一步,要裝寶典,必先 root:
基本上,Android系統是要root才可以搞花樣,就像iPhone要 jb一樣。只是用Android的人比較有Geek的精神,凡事自己來,沒有iOS上所謂"一鍵 jb"的。可是,Geek沒搞好就 GG了。

root前要做幾件事:
0. 先充飽電 (至少60%以上)。
1. 可以同步,備份的先備一下,尤其是慾照片。
2. 要在pc端安裝 USB 驅動程式,程式可以在LG官網取得,或是在網路上取得。
3. 要把打開 (USB偵錯模式)usb debugger mode,位置在
Settings→Applications→Development,或是 "設定→應用程式→開發項目。

每一台機器 root的方式都不一樣,甚至有官方直接提供 root程式的,像MOTO就有。LGE沒那麼佛心,所以只能使用網路上高手的程式。我用的是下面這一個 root的程序。


星期五, 11月 09, 2012

程式專題之一:Part-1:py2exe 的小問題

經過2週和程式的奮鬥,基本上我那個程式是完成了。
但是程式是要給別人用的,所以就只好打包成exe檔。

python自己沒有compile成exe的功能。還好有人寫了py2exe的程序來做這件事。研究了一下,這位Victor寫的進階教學還算不錯,只是它打包的是程式本身,程式呼叫的DLL檔是沒打包起來的。

尤於我用的是python 2.7.2版,直接上py2exe的官網下載並且安裝。這個過程中出現了一個小插曲,py2exe的官網上直接給的是for python 2.6的py2exe,所以要再去它的下載目錄中找出for 2.7的py2exe來裝才可以。

那,程式呼叫的DLL檔要怎麼辦?只好再上網找答案。還好我是新手,新手會遇到的問題應該都不難。很快的在Frank的五四三就找到答案了。基本上在setup這個裏面要把參數設進去即可。這樣弄好,本來約200行的程式(我是新手,程式寫得很髒,行數很多,而且註解也很多),compile起來約有7M。

接著拿去別的電腦測測看,嗶嗶~~ERROR。跳出一個message說程式沒裝好???只好再拜google大神了。大神指示往pyodbc去找答案。果然,答案就在網路中。這個問題是因為py2exe不認識我import的pyodbc,必須在setup中加個options來指定,如下:
setup(
options = { "py2exe": { "includes": "decimal, datetime" } })
如果有有指定別的option了,可以用"逗號"分開。

想說,這樣應該好了吧。一執行,哇咧,為什麼又有錯誤,還有log檔給我。這次有錯誤訊息了,表示至少程式有跑到,而錯誤訊息是:
EOFError: EOF when reading a line
。還是來問Google大神吧。還好,還不是很難的問題,大神這次指示往這兒去,會遇到貴人。果然,又是個小問題,原來之前的Victor大大功力太高,都寫GUI的程式,不像小弟我的處女作只是在CONSOLE上跑。所以要把SETUP中的
window = [{'script': "python.py"}],
改成
console = [{'script': "python.py"}],

終於........
休息了,真好!

星期一, 11月 05, 2012

程式專題之一:Part-1:用python連接資料庫

這次的工作,是要連接local的資料庫,把資料庫中的資料"倒"到網頁的表格中。

有人已經為python寫好資料庫的函式了,那個叫做pyodbc。它可以操作mysql, mssql, excel及MS access。

個人大部份的程式碼抄自於這個地方。另外參考這位大大的論述。其實,pyodbc的主網頁wiki及faq也應該去看看,只是提及MS access的部份實在太少。

其實,我很偷懶的做了一些精省,主要是不想去碰sql語法,以及我要解析的資料庫竟然都用中文當欄位名稱。在python我搞中文搞很久,過一陣子再把我搞中文的心得po出來。不過,這時候只想讓程式可以跑就好,所以就把整個資料拉出來在python中處理了。

星期五, 10月 19, 2012

程式專題之一:Part-1:Python的網頁代登方法

其實,寫程式是一件事,最重要的應該是用程式解決"生 命"中的問題。

嗯,講得太噁心了。

所以,我第一步是要解決某個行政上的事,把它當作我練功的轉案。至於是什麼事,大家看看應該也可以猜出來。

然後咧,第一步要先用程式代為登入內部網頁。所以需要一個代登功能。
這個也是為什麼我要選擇Python的原因之一,因為看來看去,Python是跟著網路一起長大的,它在網路控制、網頁處理的方面之強大不是隨便講的。雖然JAVA和JAVAscript也是,但是它的語法就是有點讓我.......無法理解 [我知道,我很笨] [畫圈圈]

至於要怎麼做,最簡單的是import cookielib, urllib2進來就是了。
詳請可以看這個:
http://arccos.blogspot.tw/2008/10/python.html

如何,夠簡單的吧!!

星期二, 10月 16, 2012

開始寫程式的第一步

終於考過資格考了![灑花、轉圈]

所以,要開始做專題了
但是,我沒錢沒人沒時間,怎麼做呀!![畫圈圈]
有些事可能還是要自己做吧 [握拳]

還記得上次講的,

寫程式全民運動 ??

所以,我也要開始寫程式啦!!
我挑到的主力語言是:

PYTHON

為什麼?
因為它和BASIC比較像!阿我只會BASIC呀 [淚奔]

不管啦,反正先完成環境的設置。
先到Python官網下載Python 2.7。因為Python 3的語法和2.7完全不同,而網路上大部份的資料還是在2.7以前,所以個人小弟不才我建議還是從2.7開始使用。

好,那寫作環境咧?
Python 似乎有自帶一個編輯器,但是實在很陽春。上次交作業時我用的還是notebook吧。後來我都建議使用RJedit,沒辦法,ultraedit要花錢買。

最近在"胖虎的祕密基地",發現他用的是PSpad,詳細教程可以看這兒,好像之前也用過,只是因為他的排序功能不夠強悍所以放棄。這次試用的結果,嗯,很滿意,它可以直接呼叫python來執行程式碼。然後回報一些執行後的訊息。還不錯用喔!

就這樣。
//for syntaxhighlighter 3 //看一下載入的JS模組有哪些,不要的就刪掉 //end syntaxhighlighter 3