スキップしてメイン コンテンツに移動

投稿

ラベル(動画)が付いた投稿を表示しています

Processingを使ってWebカメラを監視カメラにする

Processing の videoライブラリ を利用して、手持ちのWebカメラを防犯・監視カメラにしてみることにした。監視カメラとして、以下の2点を満たすこととする。 動くものを捕らえたときだけ写真を残す。 写真は指定のメールアドレスに直ちに送信される。 今回、コードを書くに当たって、Webカメラ関連については 建築発明工作ゼミ2008 、メール送信については E-mail Processing を参考にさせてもらった。特に 建築発明工作ゼミ2008 については他にもProcessing関連の有益な情報があって重宝する。 因みに、今回用いたWebカメラはずいぶん前に購入したLogitechのQuickCam for Notebooks Proだ。多分、大抵のWebカメラで問題なく動作すると思う。 それでは、早速作成してみる。 下準備 まず、ProcessingでWebカメラを利用するには、 QuickTime が必要になるので予め用意しておく。また、WindowsについてはQuickTimeでWebカメラを利用するための VDIG (QuickTime-compatible video digitizer) をインストールする必要がある。このとき、最新バージョン(1.04/1.05)では動作時にエラーが起こるようなので、バージョンは1.01を用意すること。 次に、Processingでメール送信を行うために、 JavaMail と JavaBeans Activation Framework (JAF) をダウンロードする。JavaMailからmailapi.jarとsmtp.jar、JAFからactivation.jarを取り出す。そして、Processingの作業フォルダ(コーディングしているファイルの存在するフォルダ)にcodeという名前のフォルダを作成し、その中にその3つのjarファイルをコピーする。 これで下準備は完了だ。 コーディング ライブラリについては、ビデオ関連でprocessing.video、電子メール関連でjavax.mailをインポートする。setup関数でvideoオブジェクトを作成し、draw関数で映像を表示する。今回は320×240の解像度に設定した。次にカメラの映像から、以前の画像と現...

Python: threadingでマルチコアCPUを有効に使う

動画変換などのCPU時間のかかる処理を複数コアで並列処理すれば効率的だという話。例えばIntelのCore 2 Duoの場合、常に2プロセス走っていればシングルの半分の時間で済む。というわけでPythonでやってみた。 Pythonではthreading.ThreadとBoundedSemaphoreを使って制御するのが楽そうだ。プロセスの実行はsubprocess.Popenを使う。 ここでは、複数のAVI動画ファイルを mencoder を使ってMPEGファイルに変換してみる。まず、Threadクラスを継承したMyThreadクラスを作る。また、BoundedSemaphoreで同時に実行するプロセス数を指定する。とりあえずコア数と同じ2とした。そして動画ファイル分だけMyThreadのインスタンスを作り実行する。これだけ。ちなみにセマフォではwith文を使っているがPythonのバージョンが2.5未満であればaquire/releaseに置き換えること。 実際にCore 2 Duoを積んだPCで6つの動画ファイルを変換したところ、1プロセスでは118秒かかったが2プロセス同時では60秒で済んだ。最近ではマルチコア、メニーコア全盛なのでこういった工夫は必要不可欠になってきている。 本エントリの最後にソースコードを示す。ファイル名をmy_thread.pyとすると、 my_thread.py *.avi のように実行する。 #!/usr/bin/env python from __future__ import with_statement import sys, os, glob, subprocess, threading, time pool_sema = threading.BoundedSemaphore(2) class MyThread(threading.Thread): def __init__(self, filename): self.filename = filename threading.Thread.__init__(self) def run(self): with pool_sema: self.log = ...

ブルーレイディスクで録画データをバックアップ

自宅の居間に設置しているPCはほぼ録画専用になっていてHDD容量は500GBだ。しかし、この容量でも録画目的だと全然足りない。仕方がないので、MPEG-4に変換して保存したり、DVDにバックアップしてたりしたのだが、バックアップの手間が非常にかかるので、先日、ブルーレイディスク(BD)ドライブを購入した。 MPEG-4への変換は、Pythonスクリプトとmencoderを使って、タイトルから自動的にフォルダを割り振って変換するようにしてあるので、ある程度自動化できていたのだが、DVDへのバックアップについては、1枚4.8GBの容量では何度もドライブから出し入れしなくてはならず非常に厄介だった。BDだと一層で25GB、二層(DL)で50GBと、DVDに比べ容量が格段に大きいのでバックアップがとても楽になった。最近はBD-Rの値も下がり、一枚350円を切る値段になっていて、これなら許容できる。 と云うわけで、我が家では着々とBD化が進んでいる。そう言えば最近は市販のDVDはまったく購入しなくなってしまった。BDの画質を見た後だととてもDVDを購入する気にはなれないなぁ…。

Flash Videoからサウンドを抜き出してMP3ファイルにする方法

mplayer およびlame( win/mac , linux )を利用して、Flash Video(file.flv)からサウンドを抜き出してMP3ファイル(file.mp3)にするには、コマンドプロンプト上で以下のように実行する。 mplayer file.flv -ao pcm:file=file.wav -vc dummy -vo null lame -b 128 --resample 44100 -t file.wav file.mp3 ニコニコ動画やYouTubeの動画のサウンドをMP3ファイルにしたい場合に便利。

Flash VideoをAVIファイルに変換する方法

mplayer 付属のmencoderを利用して、Flash Video(file.flv)をAVI動画ファイル(file.avi)に変換するには、コマンドプロンプト上で以下のように実行する。 mencoder file.flv -o file.avi -ovc lavc -lavcopts vcodec=msmpeg4v2 -oac mp3lame ニコニコ動画やYouTubeの動画を変換したい場合に便利。

PS3が売れてる?

11月の集計では、PS3は据え置き型ゲーム機で販売台数がトップになったらしい。直接の原因は40GBモデルと値下げによるものだろう。まあ、何はともあれ、PS3にはもっと頑張ってもらいたい。 以前からPS3を利用しているが、前にも云ったようにPS3の満足度はかなり高い。個人的には面白いゲームが増えてきたと思う。プレイ済みのゲームは、「フォークス・ソウル」、「モーターストーム」、「アイ・オブ・ジャッジメント」、「鉄拳5 DARK RESURRECTION ONLINE」など。後は「まいにちいっしょ」もか。これはゲームとはちょっと違うかもしれないが、無料でこれだけ完成度の高いコンテンツも凄いと思う。ほかに、「ライズ・フロム・レア」も購入したがこれはほとんどプレイしていないなぁ。別につまらないと云うわけではないのだが、ここまで手が回らない。 他の使い方としては、メディアサーバとして使っている。PC上で取り溜めた録画ビデオなどをLANを介してPS3で観る。さらに、PS3を介してPSPで観る。これが思いのほか便利だ。寝床で寝転んで観られるのは良い。PSPからネットを介してPS3をリモートで起動できるので、家のみならず、外出先からでも使うことができるのがさらに良い。便利になったものだ。もちろん、DVDのアップコンバートで非常にクオリティの高い画質とか、BDプレーヤーとしての利用は言わずもがなだ。 それにしても、利用者の満足度はかなり高いと思うのだが、ネットなどではPS3を卑下する発言が多い。実際使ってみるとかなり良いこと分かるのになぁ。まあ、本当に使って合わなかった人は仕方ないけどね。

連続した静止画を動画にする方法

mplayer に付属しているmencoderを使う。 MPlayer - Download からダウンロードできる。Windowsでも、Unixでも利用できる。Windowsでは コマンドプロンプト 上で使う。詳しくは マニュアル を参照のこと。 連続した複数のPNG画像をフレームレート30でAVI動画ファイル(output.avi)に変換する。 mencoder "mf://*.png" -mf fps=30 -o output.avi -ovc lavc -lavcopts vcodec=msmpeg4v2 ついでに、 ImageMagick を利用した画像フォーマットの変換についても載せておく。 mencoderはBMP画像を取り扱えないので、BMP画像を動画にしたい場合は予め変換しておく必要がある。ImageMagickについては、 Googleあたりで検索 すれば詳しいインストールや扱い方が見つかると思う。 PostScript画像(input.ps)をGIF画像(output.gif)に変換する。 convert input.ps output.gif 複数あるBMP画像を同じ名前でPNG画像にする。拡張子だけが変わる。 mogrify -format png *.bmp