2016年5月4日 星期三

Mac + Cronjob + Python + OpenCV + Webcam = 縮時攝影


上周六到石峽尾教授「開發 Android 應用程式」後順道去了深水埗黃金商場,以 HK$40 購買了一支 USB 鏡頭。打算連接 Raspberry Pi 2 為我的植物進行成長過程的縮時攝影。家中有一支外型一樣,功能差不多的鏡頭,它能順利在 Raspberry Pi 2 上使用;可是新的那支卻無法成功連接。買這支鏡的原因是使用 OpenCV 作實時影像分析的解像度不用很高,640x480 已經綽綽有餘。既然如此,何不買平價的呢?

既然 Raspberry Pi 2 無法使用這支鏡頭,連到 Mac 上看看。雖然有點慢,但成功了。意味著我不能拿它去換一支新的...。這樣,只好把本來由 Raspberry Pi 2 的工作調給 Mac mini 去做。原本想簡簡單單以 Python 擷取鏡頭畫面,但找到十個方案,十個都要用 OpenCV,只好在 Mac mini 上安裝 OpenCV 好了。查過 Mac OS X 本身也支援 crontab,所以用它來設定每兩分鐘拍攝一張 640x480 解像度的相片。以下是擷取鏡頭畫面的 Python 程序:
##------------------------------------------------------------------------------
##  Capture a still picture from webcam
##------------------------------------------------------------------------------
##  Language: Python 2.7 + OpenCV
##  Platform: Mac OS X 10.9
##  Written by Pacess HO
##  Copyright 2016 Pacess Studio.  All rights reserved.
##------------------------------------------------------------------------------

import cv2
from time import localtime, strftime

##------------------------------------------------------------------------------
##  Create webcam object
capture = cv2.VideoCapture()
capture.set(cv2.cv.CV_CAP_PROP_GAIN, 1)
capture.open(0)

##------------------------------------------------------------------------------
##  Get a frame from webcam
retval, image = capture.retrieve()
capture.release()

##------------------------------------------------------------------------------
##  Save frame to a JPEG file, filename is timestamp
filename = strftime("%Y%m%d%H%M%S.jpg", localtime())
cv2.imwrite(filename, image)

沒有留言: