延時攝影(英語:Time-lapse photography)是以一種較低的幀率拍 下圖像或者視頻,然后用正常或者較快的速率播放畫面的攝影技術(shù)。在一段延時攝影視頻中,物體或者景物緩慢變化的過程被壓縮到一個較短的時間內(nèi),呈現(xiàn)出平時 用肉眼無法察覺的奇異精彩的景象。延時攝影可以認(rèn)為是和高速攝影相反的一個過程。延時攝影通常應(yīng)用在拍攝城市風(fēng)光、自然風(fēng)景、天文現(xiàn)象、生物演變等等題材上。”
種草
最近買東西得了個小贈品,是一種可以快速生長的小草,拿回來就種在了辦公桌上。今天發(fā)芽了,一時興起打算做個延時攝影,辦公室里正好有個非常老舊的640x480攝像頭,于是有了下面的這個延時攝影動圖(為了上傳壓縮了畫面大小):

實(shí)現(xiàn)
需要準(zhǔn)備的:
1) 電腦
2) 攝像頭(如果電腦沒有的話),淘寶上好多20以下包郵
3) Python 2.7,因?yàn)樾枰褂胦pencv,所以用Python2
4) opencv的Python binding,去官網(wǎng)上下載,如果不想自己編譯,只要到/build/python/2.7/下面就可以找到32位和64位的cv2.pyd,把這個文件直接拷貝到/Python27/Lib/site-packages/即可
代碼如下:
import cv2import timeinterval = 20 # secondsnum_frames = 500out_fps = 24capture = cv2.VideoCapture(0)size =(int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)), int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))video = cv2.VideoWriter("time_lapse.avi", cv2.cv.CV_FOURCC('I','4','2','0'), out_fps, size)# for low quality webcams, discard the starting unstable framesfor i in xrange(42): capture.read()# capture frames to videofor i in xrange(num_frames): _, frame = capture.read() video.write(frame) ## Optional, in case you need the frames for GIF or so filename = '{:4}.png'.format(i).replace(' ', '0') cv2.imwrite(filename, frame) print('Frame {} is captured.'.format(i)) time.sleep(interval)video.release()capture.release()既然是簡單的延時攝影,代碼也是非常簡單的。設(shè)定好拍攝間隔,總幀數(shù)和輸出的幀率,用VideoCapture獲取攝像頭的圖像,用VideoWriter寫入視頻,考慮到有些劣質(zhì)攝像頭在初始化的時候不穩(wěn)定(比如我用的這個老式攝像頭),在正式捕捉圖向前可以考慮略過初始的幾十幀,捕捉過程中也可以直接輸出圖片方便制作GIF或者其他用途。
最后再來一個鐵皮盒上水滴蒸發(fā)的全過程:

新聞熱點(diǎn)
疑難解答
圖片精選