windows で複数のwebカメラを使って、静止画webcamとして運用する

研究室のPCで、そんなことをしていました。
のですが、PCのHDDが壊れた。2.5inchだったのでしかたない。熱だな。部屋が暑いので熱でこわれたー。

というわけで、古いコードが無事だったので、それを保存しつつここにも公開して、またwindows PCで複数webcamとかしたくなったら利用したいと思う。最新コードは失われてしまった。この古いコードは結局書き加えねばならないのかもしれない。
というかwindows用アプリケーションにそういうモノはある。しかし、安物ウェブカムを3つつなぐとなかなかうまく認識しないとかバギーでありますから、使わなかった。
LiveCapture2 2.0.3(vector)

一つのwebcamなら、静止画キャプチャてftpアップしてくれるソフトはいろいろあるようです。

私は、複数つかいたいということで、python + VideoCapture.pyをつかいました。win32でしか使えないのですが、なかなか楽でよいです。
カメラが安定するまで数秒かかることがありますのでキャブチャするには、time.sleep(5)とかいれるといいです。

一時にひとつのwebcamしか接続しないので、cpu資源の消費を抑えられます。
livecaptureで、3台のwebcamをつないだときは、athlon xp 2200+ のノートブックですが、画面を最小化したとき(表示していないとき)でも接続しっぱなしのようで、90-100%のままでした。ので、静止画像とりたいだけならこれがいいんかなと。

このpythonコードをcronpyで1分ごととかに起動するわけです。
欠点はwindowsにpythonを入れるのがめんどくさいことです。


import time, os, sys
from ftplib import FTP
from VideoCapture import Device

prgpath = os.path.dirname(os.path.abspath(sys.argv[0]))


def main():
    cam = Device(0)
    cam.saveSnapshot(prgpath + '/cam0.jpg', 1)
    time.sleep(5)
    cam.saveSnapshot(prgpath + '/cam0.jpg', 1)

    cam = Device(1)
    cam.saveSnapshot(prgpath + '/cam1.jpg', 1)

    cam = Device(2)
    cam.saveSnapshot(prgpath + '/cam2.jpg', 1)

    ftp = FTP('bee')
    ftp.login('foo', '')
    ftp.cwd('./boo/')
    ftp.storbinary('STOR 1camera', open(prgpath + '/cam0.jpg', 'rb'))
    ftp.storbinary('STOR 2camera', open(prgpath + '/cam1.jpg', 'rb'))
    ftp.storbinary('STOR 3camera', open(prgpath + '/cam2.jpg', 'rb'))
    ftp.quit()


main()

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す