<p>最近在研究《种子的萌发》一课时遇到很多问题,如何才能直观的让学生看到种子萌发的整个过程?这时我想到了延时摄影(当然网上有很多相应的视频,不过我认为只有自己观察到的才最真实)。</p><p><br></p><p>一说到延时摄影大家一定会想到照相机、摄像机及手机,不过这些设备不是太贵就是电量跟不上(当然可以加移动电源),同时种子萌发过程一般要一个星期左右,时间跨度较大,经过我再三思量,选择了手机和电脑外置的摄像头。</p> <p>一、电脑外置摄像头拍摄(延时摄影)</p><p><br></p><p>用电脑外置摄像头拍摄视频或图片有很多软件,不过都没有延时摄影功能,这时我想到了Python,可以用cv2 调用摄像头进行拍照,于是就有了下面这个小程序。</p><p><br></p><p><span style="color: rgb(22, 126, 251);">import cv2 </span></p><p><span style="color: rgb(22, 126, 251);">import time</span></p><p><br></p><p><span style="color: rgb(22, 126, 251);">interval = 2 # seconds </span></p><p><span style="color: rgb(22, 126, 251);">num_s = 500 </span></p><p><span style="color: rgb(22, 126, 251);">out_fps = 24 </span></p><p><br></p><p><span style="color: rgb(22, 126, 251);">cameraCapture = cv2.VideoCapture(0)</span></p><p><span style="color: rgb(22, 126, 251);">cameraCapture.set(3,1024) </span></p><p><span style="color: rgb(22, 126, 251);">cameraCapture.set(4,768)</span></p><p><span style="color: rgb(22, 126, 251);">size = (int(cameraCapture.get(cv2.CAP_PROP__WIDTH)),</span></p><p><span style="color: rgb(22, 126, 251);"> int(cameraCapture.get(cv2.CAP_PROP__HEIGHT)))</span></p><p><span style="color: rgb(22, 126, 251);">video = cv2.VideoWriter("time_lapse.avi", cv2.VideoWriter_fourcc('I','4','2','0'), out_fps, size)</span></p><p><br></p><p><span style="color: rgb(22, 126, 251);"># for low quality webcams, discard the starting unstable s</span></p><p><span style="color: rgb(22, 126, 251);">for i in xrange(42):</span></p><p><span style="color: rgb(22, 126, 251);"> cameraCapture.read()</span></p><p><br></p><p><span style="color: rgb(22, 126, 251);"># capture s to video</span></p><p><span style="color: rgb(22, 126, 251);">for i in xrange(num_s):</span></p><p><span style="color: rgb(22, 126, 251);"> _, = cameraCapture.read()</span></p><p><span style="color: rgb(22, 126, 251);"> video.write()</span></p><p><br></p><p><span style="color: rgb(22, 126, 251);"> ## Optional, in case you need the s for GIF or so</span></p><p><span style="color: rgb(22, 126, 251);"> filename = '{:4}.png'.format(i).replace(' ', '0')</span></p><p><span style="color: rgb(22, 126, 251);"> cv2.imwrite(filename, )</span></p><p><br></p><p><span style="color: rgb(22, 126, 251);"> print(' {} is captured.'.format(i))</span></p><p><span style="color: rgb(22, 126, 251);"> time.sleep(interval)</span></p><p><br></p><p><span style="color: rgb(22, 126, 251);">video.release()</span></p><p><span style="color: rgb(22, 126, 251);">capture.release()</span></p> <p>还在拍摄中</p> <p>看不懂不要紧O(∩_∩)O,复制下来直接用。</p><p><span style="color: rgb(237, 35, 8);">1.说明</span></p><p>延时摄影程序是基于python2.7 64位 版本开发的 ,使用时应安装对应的软件。</p><p>同时程序中调用了 cv2 安装好python2.7后请把“cv2.pyd”文件拷贝到 :\Python27\Lib\site-packages 文件夹中。</p><p>亲测,win10可用。</p><p>先安装python-2.7.17.amd64.msi, 之后阅读 2.常见问题说明</p><p><br></p><p>程序说明:</p><p>interval = 30 # seconds 设定拍照间隔时间</p><p>num_s = 3000 设定拍照张数</p><p>out_fps = 24 设定生成视频每秒帧数</p><p><br></p><p>cameraCapture.set(3,1024) 设定分辨率 宽 (分辨率设定需要了解摄像头最大支持分辨率)</p><p>cameraCapture.set(4,768) 设定分辨率 高</p><p><br></p><p>程序自动生成的文件格式为 avi 格式 ,为半压缩avi视频,pr软件不识别 ,如用pr编辑推荐直接导入图片(序列)。</p><p><br></p><p><br></p><p><span style="color: rgb(237, 35, 8);"> 2.常见问题说明</span></p><p>1、推荐把程序安装在c盘,安装在其他盘请自学更改环境变量。</p><p>2、常用快捷键</p><p> win+r 调出运行窗口</p><p>3、常用命令</p><p> cmd dos程序的shell程序</p><p> pip install opencv-python 常用的安装cv2 的命令</p><p>4、cv2 安装方法</p><p> 先把cv2拷贝到 :\Python27\Lib\site-packages 文件夹内,返回到lib文件夹,按住shift键同时</p><p>用鼠标右键点击site-packages文件夹,找到 “在此处打开powershell窗口”并单击,然后输入命令</p><p>pip install cv2</p> <p>拍摄后会生成很多图片和一个视频,视频推荐删除。直接用pr调用所有图片进行编辑,就可以形成视频。</p> <p>生成的几千张图片</p> <p>把图片导入到pr中。</p> 二、用手机拍摄延时视频<div><br></div><div>手机拍摄最好有一台不用的手机,和一个支架。下载“延时摄影app”,调节好参数接好充电线架好手机,对准焦距即可拍摄。</div><div><br></div><div>不过手机就别想干别的用了。发烫是自然的。毕竟不是工业级的。</div> <p>鸣谢</p><p>感谢谢老师多天来的帮助,感谢家人的大力支持。</p>