Python + Dropbox 打造简易版 WebCam

2012-03-26 02:20:23 +08:00
 XDash
最近一阵离职在家休息,终于有相对充裕的时间折腾研究一些感兴趣的东西,比如 Arduino,比如 Python,比如 HTML5,又比如我还领养了一只小仓鼠。

晚上折腾时发现了 VideoCapture 这个 Python 库,用于获取对视频设备的支持,能通过电脑摄像头捕获视频信号以及截图。联想到平时出门需要了解一下家中仓鼠的动态,于是灵机一动,打算巧借 Dropbox 的力量打造一个 Python 实现的 WebCam。

原理:利用 Python 调用 VideoCapture 获取摄像头拍到的图像,保存到 Dropbox 的 Public 文件夹下,通过 Dropbox 的自动同步更新这个外链的图片文件,从而实现远程监控的 WebCam 功能。

准备工作:

1、始终在线用于监控的带摄像头的电脑一台(USB 外接摄像头也可,我用的仅仅几十块钱);
2、在上述电脑上运行的 Python 环境;
3、一个支持外链并且自动同步的网盘,比如 Dropbox,或是其他国内访问无阻的同类产品;
4、一只被24小时置于摄像头监控范围内的小仓鼠,当然这个可以被任意替代。

开搞:

1、本地配置好 Python,我用的是 2.5 (更新的版本可能与当下网络流行的库的兼容性较差),确保能 Hello World 成功。
2、获取 VideoCapture 库(解压后去 Python25 文件夹把相关文件复制到 Python 程序目录的对应文件夹下)。这是主角。
3、另外两个配角也不能少:PIL(一个 Python 的图像库,用于保存图片)和 DirectX(一般机器已经自带)。
4、写代码!我研究仿效的代码来自这个哥们的博文示例( http://blog.csdn.net/dyx1024/article/details/7249811 ),基本可以拿来直接用。但我还是稍微进行了修改,把原来那个无止境的 While True 循环做成了有条件终止的循环,把抓取频次改成了每 5 秒一次(SLEEP_TIME_LONG = 5)。
5、把 cam.saveSnapshot 这句里定义的保存路径改为了我的 Dropbox 目录下外链目录 Public 的路径下的固定文件名 WebCam.jpg。

OK,这就算齐活儿了。运行程序,只见在 C:\Dropbox\Public\webcam\ 下生成了一张来自摄像头的截图,并且每隔 5 秒自动刷新。同时 Dropbox 也会第一时间将其同步到您的网络空间。于是通过形如 http://dl.dropbox.com/u/3876xxx/webcam/WebCam.jpg 的外链地址就可以访问你的摄像头图片了——这俨然就是一台低成本的 WebCam。

(再玩的深入点,什么发微博发推的都能加上,这样就等于给小仓鼠建立了个自动更新状态的个人主页 ^_^)
9917 次点击
所在节点    Python
19 条回复
caomu
2012-03-26 02:24:50 +08:00
cool,我还是想搞一个防盗用,识别图像出现移动物体就短信什么的。。。
话说这个可以和rhome等最后弄成一个开源的智能家居方案体系。
zhuzhuor
2012-03-26 02:26:15 +08:00
不错,好玩
另外当心dropbox上传到了limit。。。不行了可以换什么upyun(虽然我自己也没用过。。)

写个网页,每隔几秒自动刷新图片就更好玩了
itommy
2012-03-26 02:52:36 +08:00
这个hack也太有酷了吧!
gavingeng
2012-03-26 09:05:20 +08:00
费电......
技术宅......
holmesabc
2012-03-26 09:59:37 +08:00
用微薄发图嘛
更有意思
sunshineg
2012-03-26 10:04:16 +08:00
cool~!!!

最近也打算休个假 -,-
sunshinewu85
2012-03-26 10:12:38 +08:00
我勒个去!!这艺术源于生活,这码子也是啊!~
sun019
2012-03-26 10:18:55 +08:00
yeah 这个好玩 刚看你微博上说这事儿了
alai
2012-03-26 10:24:14 +08:00
既然都Arduino了 不妨在加上一个远程看护的功能
python监视dropbox指定文件夹
上传文件 触发蓝牙或者wifi信号
Arduino过去给他按给食或给水口
hewigovens
2012-03-26 10:30:09 +08:00
@alai 好像没用到Arduino,“始终在线用于监控的带摄像头的电脑一台”
XDash
2012-03-26 11:00:48 +08:00
@sunshineg 你也要休假式治疗啊,打算休多久?
XDash
2012-03-26 11:01:24 +08:00
@gavingeng 很多人家里电脑本身就是二十四小时开着的吧。。
sunshineg
2012-03-26 11:03:12 +08:00
@XDash 我也就一周了,打算4月中旬去青岛那边...
alai
2012-03-26 11:10:40 +08:00
@hewigovens 既然都有Arduino
tylr
2012-03-26 12:20:33 +08:00
赞!我也打算去试下,买台超小电脑配摄像头监控我家的狗仔哈~
XDash
2012-03-26 13:02:09 +08:00
@tylr 专门买台电脑啊 — —
tylr
2012-03-26 13:36:15 +08:00
@XDash 狗窝在阳台上,得买台小点的哈
kojp
2012-03-26 14:02:46 +08:00
宅男+仓鼠,真费电!

真的好帅!
caoyue
2012-03-26 14:43:38 +08:00
Lifehack,很赞啊!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/30561

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX