PythonでWebカメラから静止画を撮影してみる

あ、Windows Live Writer新しくなってから始めて使ったわ…

VideoCapture(名前ないのか…)を使うと楽にカメラが扱える。

PILをインストールしてから、VideoCaptureの当該バージョンを自分のPythonインストールディレクトリに上書きすればいいだけ。

実行環境はWindows Vista Ultimate+Qcam Pro for notebook+Python 2.5

ソースは以下。超簡単。

import re
import time
from VideoCapture import Device

def main():
    t = time.time()
    cam = Device(devnum=0,showVideoWindow=1)
    print time.time() - t
    cam.setResolution(640,480)
    print time.time() - t
    for i in xrange(100):
        print time.time() - t
        cam.saveSnapshot('testtestimage%d.jpg' % i)
    print time.time() - t

if __name__ == '__main__':
    main()

実行結果は以下の通り。わりと早いし安定してる気がする。初回のsaveSnapshotで時間がかかるのか。以降は0.02秒程度なので余裕。今後実用してみて耐久性を見る予定。

0.680999994278
0.891999959946
0.891999959946
2.18300008774
2.20499992371
2.22799992561
2.25200009346
2.27399992943
2.29699993134
2.33400011063
2.35700011253
2.38000011444
2.40300011635
2.42499995232
2.4470000267
2.46900010109
2.49099993706
2.5150001049
2.53699994087
2.56100010872
2.58599996567
2.60800004005
2.63100004196
2.65700006485
2.6779999733
2.70199990273
2.72499990463
2.74699997902
2.77200007439
2.79399991035
2.81900000572
2.84200000763
2.86400008202
2.88800001144
2.9240000248
2.94600009918
2.96900010109
2.992000103
3.01399993896
3.03900003433
3.06399989128
3.08800005913
3.11100006104
3.132999897
3.15499997139
3.18700003624
3.20900011063
3.23200011253
3.25699996948
3.27999997139
3.30500006676
3.32699990273
3.34899997711
3.37199997902
3.39299988747
3.41400003433
3.43600010872
3.45900011063
3.48000001907
3.50300002098
3.52500009537
3.54600000381
3.56900000572
3.59100008011
3.61299991608
3.63499999046
3.65799999237
3.68000006676
3.70300006866
3.72399997711
3.7460000515
3.76900005341
3.79099988937
3.81299996376
3.83500003815
3.8599998951
3.88199996948
3.90599989891
3.92700004578
3.9470000267
3.97799992561
4.0
4.02200007439
4.04500007629
4.06699991226
4.09100008011
4.11500000954
4.13599991798
4.15899991989
4.1819999218
4.20399999619
4.22600007057
4.24900007248
4.27200007439
4.29299998283
4.31699991226
4.33899998665
4.36299991608
4.38400006294
4.40499997139
4.42499995232
4.44900012016
4.47000002861

ちなみにshowVideoWindow=1はカメラのウィンドウを表示するモードなので、0にしてテストもしてみたが、時間の増加量は大差ない模様。

あと、Qcamのオートフォーカスを効かせるためには一度saveSnapshotしてから、しばらくおかないとダメらしい。試してないけど、getImageでも多分平気。

キャプチャボードとかのソースでもいけるっぽいので、何かできそう。というか、DirectShowソースか。画面キャプチャで何かできるかな…


新しく会社作りました!

コメントをどうぞ