V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
XDash
V2EX  ›  Python

Python + Dropbox 打造简易版 WebCam

  •  
  •   XDash ·
    xdash · 2012-03-26 02:20:23 +08:00 · 9897 次点击
    这是一个创建于 4631 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近一阵离职在家休息,终于有相对充裕的时间折腾研究一些感兴趣的东西,比如 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。

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

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

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

    真的好帅!
    caoyue
        19
    caoyue  
       2012-03-26 14:43:38 +08:00
    Lifehack,很赞啊!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2863 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:17 · PVG 22:17 · LAX 06:17 · JFK 09:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.