2012年11月3日

以webcam進行縮時攝影的方法

進行長時觀察變化的專題研究時,例如看溫度、濕度的變化,最好的情況就是那個儀器本身就有資料紀錄的功能,不然就是要自己做一個(請參考arduino系列),如果都沒有辦法,那麼就需要用到影像紀錄了。

架個攝影機或是webcam,對著要觀測的物品或儀器屏幕持續拍攝,不過如果是拍攝影片,會有影片佔空間的問題,能拍攝的時間就得縮短。遇上這樣的需求時,我們會用webcam的定時攝影的功能,使用軟體每隔固定秒數或分鐘,拍攝一張照片,事後再分析照片來觀察變化。

舉例來說,若要觀察某個植物放在密封袋中,袋內相對濕度的週期變化,那麼就只要用webcam對著袋子裡的溼度計拍攝即可,不過像這樣的案例要注意,溫度會影響濕度,所以溫度應該也要記錄下來。



在windows中,若是XP系統,可用 Webcam Timershot。如果是用Win 7,可以用avacam試試看。此外以下兩個都有免費版本和付費版本可挑選使用,一個是VideoVelocity,另外一個是flix。若是單對錄影有需求,卻偏偏沒有webcam的應用程式可用,建議可以用以下兩個玩玩AMcapDebut video capture



ubuntu上有文字界面的作法,也有圖形界面的作法。

從webcam擷取影像,並合成影片
資料來源
 http://rtadlock.blogspot.tw/2008/11/cheap-time-lapse-with-webcam-vlc-and.html
http://nlippincott.org/easy-time-lapse-video-with-ubuntu

作法
1.事先安裝vlc 和ffmpeg
2.用vlc擷取圖片(下例是從 /dev/video0 儲存每個第10張影片,要知道webacam裝在哪裡,可以用dmesg查詢)
cvlc v4l2:// :v4l2-dev="/dev/video0" -V "image" --image-out-prefix img --image-out-format jpg --image-out-ratio 10 --v4l-fps 30

3.若有將圖片轉換成影片的需求,可以下以下的命令
 ffmpeg -b 1800 -i img%06d.jpg video.mpg


從錄製好的影片中,擷取圖片,並合成新影片
資料來源 http://pr0gr4mm3r.com/linux/how-to-create-a-time-lapse-video-using-ffmpeg/

作法 是直接寫個script去跑影片來合成
#!/bin/bash

# Description: make time lapse video
# Usage: time-lapse.sh   
# Source Video: the video that you are wanting to speed up
# Destination File: the file where the video will be saved
# Frames: the number of frames to pull per second (1 will speed it up the most, 10 will be slower)

mkdir ffmpeg_temp
ffmpeg -i $1 -r $3 -f image2 ffmpeg_temp/%05d.png
ffmpeg -i ffmpeg_temp/%05d.png -b 512 $2
rm -rf ./ffmpeg_temp


圖形界面
如果想直接用圖形界面,可以安裝cheese,在編輯/偏好設定中可以設定每隔幾秒擷取一張,並設定共擷取幾張。