Images to Video
之前有寫過把影片拆成一串 image 的方法,這邊則是反過來,把一串 image 兜成一段影片。
一樣是用 mplayer 系列,以下例子是把目前資料夾中的所有 jpg 都壓起來:
注意的是可以用方便不已的 regular expression,所以假設要合第 200 ~ 299 個 frame 可以這樣下指令(假設資料夾下圖檔名如 mplayer 之拆解所預設補至八位數字如 00000001.jpg):
如果檔名長得比較麻煩,也可以先用 shell script 或 scripting language 自動的寫出一個檔案 list.txt,每行指定一個檔案,然後下:
參考連結:
Encoding from multiple input image files
Tags: Linux, MEncoder, MPlayer, Video
半瓶醋的 C++ 教學(第四章):編程環境的選擇
之前在第三章曾經提到,越接近數學的內力不容易隨時間而改變,但作為外功的程式或系統工具則會,那麼,我們該如何儘量讓自己的外功能夠歷久恒新呢?
很直覺的,當然就是選用較不會過時的工具。而工具要能夠在變化萬千的編程界中不被時間所淘汰,固然本身素質要好,另外,我認為最重要的其中一個環節就是,開放。雖然這應該很直覺,不過還是稍加解釋一下好了…
如果今天某工具某 framework 是知名大廠所提倡的,或許在這大廠能夠予以支援的狀況下是還滿不錯用的,但是天有不測風雲啊,再怎麼大的公司總也有收攤的一天…就算沒有收攤好了,也許是公司的政策改變了,要改推另一個工具,那麼這時候無論是開發者的使用順手度,還是市場的接受度(你知道,麻瓜常常都是看哪個廣告多就用哪個,但我們巫師要有巫師的衿持),都難免急轉直下。因為他不開放,沒人搞得懂裡面在幹嘛,所以不會有社群的力量,同理,你也搞不懂,就算你再強想自己硬幹也沒辦法,除非重新寫一個。
甚至不要說收攤或是什麼行銷政策了,光講某M社的 IDE,常常出一個新的版本舊的版本的 code 就不能用了,這種愚蠢的事情我真想不透為什麼有人能夠接受…
Tags: C++, CommandLine, Linux, ProgrammingArt, Ubuntu, Vim
Notes on cvQueryFrame
用 cvQueryFrame 要特別注意,連續 call 的話會一直往後面的 frame 跑,而且之前用 pointer 指的話,也會跟著往後跑,用 code 來說明的話:
frame2 = cvQueryFrame() ; // point to the second frame
frame1 原本是指向第一個 frame,但又 call 了一次後會跟 frame2 一起指向第二個 frame,若再 call 一次:
則 frame[1-3] 都會指向第三個 frame。
所以碰到像 optical flow 之類需要兩個連續 frame 的時候,第二次 call cvQueryFrame 之前,要先用另外一份空間把第一個 frame 備份起來。我正在玩的這份 sample code 是這樣用的:
cvConvertImage(frame, frame1_1C, 0); // convert to the OpenCV preferred format
Tags: C++, OpenCV, Programming
用 wget 抓無名單一相簿
雖說也有幹圖王之類的可以用,不過我個人感覺那實在是肥大了點。加上好玩,就用 wget 試了一下。
無名的 page source 寫得相當簡單。首先從中找到類似以下這行的 html code。
就可以得到 server_id, user_id, album_id, photo_id(應該明顯到不需要寫出來吧 :))
用這樣的方法找到該相簿第一張與最後一張的 photo_id,寫出類似以下 shell script,執行,就搞定啦。
do
wget http://server_id/user_id/album_id/$i.jpg –referer=“http://www.wretch.cc”
done
基本上 pixnet 也差不多,可以自己試試看。
要注意的是從 photo_id_start 到 photo_id_end 不見得每個 url 都實際存在。但實際測試基本上都滿 OK 的,如果真的隔太遠自己手動調一下也行。我沒有很常抓圖,所以就一直沿用這本質上很暴力的方法,如果有比較好的方法歡迎討論討論。
Tags: Image, Network, Wget, Wretch
MPlayer 下使用字幕
用 mplayer 使用中文字幕似乎不是一件太簡便的事情。參考了 Free BSD Chinese HOWTO,但在我的 Ubuntu 7.04 上似乎不 work。
以下指令均不能使用(假設字型放在該路徑、字幕編碼為 utf8):
mplayer -font /font/big5-kai/bkai00mp16/font.desc -sub 1.srt -unicode 1.mkv
所以只好去抓英文字幕來用…
很簡單就可以使用
加 subfont 之類的參數可以改動字型大小等等
或是寫在 ~/.mplayer/config 之中也可以
Tags: Linux, MPlayer, Subtitle, Ubuntu
半瓶醋的 C++ 教學(第三章):程序員的內力與外功
很多人都曾經提出過這樣的比喻:程序員的功力之中,大致上可以分為內力以及外功。
Tags: C++, ProgrammingArt
SVN 遠端協同作業
最近剛好有同學在問,隨手記一下,如果要將 code 上傳遠端工作站,與隊友協同作業時大概要怎麼做。首先要先登入遠端工作站,在上面開啟這個 project:
svnadmin create /home/batman/svn/paper_with_robin
再回到本機端 project 之下,將其 import 到遠端:
svn import . svn+ssh://batman@workstation:/home/batman/svn/paper_with_robin
這樣 robin 就可以用以下指令 下載一份並與你協同作業了。
Paper Writing
Non-native speaker 寫的 paper 常常很難懂。尤其是華人或是印度人寫的 paper,好像怕別人不知道他們數學很好一樣,往往沒頭沒腦的就丟一堆式子出來。
當然作為一篇 technical paper,go to detail 毫無疑問是重要的。但是應該要像 coding 的時候一樣,按照由上而下的層次先把整篇 paper、每個 section、每個 subsection 的 high-level concept 建立起來(如果能用圖就儘量用圖),最後再丟 detail 出來。可讀性最佳的 paper 應該是可以用三種方式閱讀:只看 abstract、以及圖表可以了解整篇 paper 主要的 idea 是什麼;只看文字部分,略過所有數學細節可以掌握演算法的大概;逐字逐式精讀,可以毫不模糊的正確實作出該篇 paper。
然後語感也是個問題,不過這就是非戰之罪了,誰教英文是國際語言。只不過台灣的理工科研究生英文平均水準實在不甚佳(有一大批英文不錯的可能已經先出國了)。實驗室如果夠有錢,投 paper 的時候如果能夠花點錢請 proficient English speaker 修一修,paper 上的機率應該至少可以增加 50% 吧。如果我是 reviewer,對於某些可讀性太差的 paper 真的會很想看都不看直接 reject。
Tags: Research Writing
rsync 用於遠端上傳與備份
雖然應該不少人知道,rsync 可以用在遠端工作站等等之上(那個 r 本來就是 remote 的意思),不過還是要推廣一下,不管跟 crontab 搭配作備份,或是拿來上傳下載東西都滿好用的。若要用於遠端站台,指令形如下式:
站台後接冒號,與 scp 等相同,但與 svn 不同,我自己有時候會不小心忘掉。比較一下,svn 的 remote version 長這樣:
-a 這參數似乎是個定番,查 man 查不出個所以然,寫得有些籠統…–delete 的意思是說如果有什麼檔案在 target 有卻沒出現在 source 中的就殺掉,如此可以作到呆呆拖拉法所作不到的真正的完全同步。算是 command line 環境優雅又強大的一個實例。
Tags: Backup, Linux, rsync, Shell
Command Line Pizza Ordering Program
在 digg 上看到的,還滿有趣,放上來分享一下。
有 .deb 檔嗎?有的話還滿想裝一下的。 XD
Tags: Funny, Geek, Linux, Unix



