パソコンにウエブカメラ(3000円位)を付ければOKの簡単な監視カメラを2つ作ってみました(カメラ付きパソコンならパソコンだけでOKです)。
processingという言語を使用しています。アプリにしたものもあるので、ご希望があればお送りします。ただ、WinVDIG1.0.1とQuickTimeは、自力でインストールする必要があります(でも、インストールは簡単です)。
/*防犯カメラ1
急に明るくなったのをきっかけに(例えば、玄関に人が入って来てセンサーライトが点灯した時)、毎秒2枚で10秒間写真を撮影し保存する。*/
import processing.video.*;//ライブラリの取り込み
Capture myCapture;
boolean start=true;//記録開始用のフラグ
int num=0;//記録画像インデックス用変数
double br=0.0;//明度
double prebr=0.0;//1フレーム前の明度
int total=0;//撮影総数
void setup() {
size(320, 240);//画面サイズ設定
myCapture = new Capture(this, width, height, 2);
frameRate(2);//キャプチャする映像の設定(2フレーム/秒)
background(0);
}
void draw() { //映像を画面に配置
image(myCapture, 0, 0);
loadPixels();
prebr=br;
br=0.0;
for(int i=0; i<(320*240); i++){
br= br+ (brightness(myCapture.pixels[i])/100);
}
if((prebr>10000)&&(prebr<110000)&&(br>100000)) num=20;//20枚撮影
if(start&& num>0 && br>10000){ //撮影
int d=day();
int h=hour();
int m=minute();
String s=”i_”+d+”_”+h+”_”+m+”_”+num+”.jpg”;
save(s); //画像を保存
total++;
if(total>3000) start=false;//3000枚まで保存可
num–;//インデックス番号を更新
if(num<0) num=0;
}
updatePixels();
}
//映像の読み込み
void captureEvent(Capture myCapture) { myCapture.read();}
void keyPressed(){
//if(key==’s’){ start=true; } //sキーで画像記録開始
if(key==’e’){ start=false; } //eキーで記録終了
if(key==’c’){ myCapture.settings(); }}//cキーでカメラセッティング
/*************************************/
/*防犯カメラ2
ウエブカメラの画像に(人が来たりして)変化が有ったとき、毎秒2枚で5秒間写真を撮影し保存する。*/
import processing.video.*;//ライブラリの取り込み
Capture Camera;
PImage Pcamera;
boolean start=true;//記録開始用のフラグ
int num=0;//記録画像インデックス用変数
int total=0;//撮影総数
int discard10=10;//初期動作無視用
void setup() {
size(320, 240);//画面サイズ設定
frameRate(2);//キャプチャする映像の設定(2フレーム/秒)
Camera= new Capture(this,width,height,2);
Pcamera= new PImage(width,height);//前のフレーム保存用
}
void draw() {
Pcamera.loadPixels();
image(Camera, 0, 0);
loadPixels();
int diffcount=0;//前フレームとの差カウント用
for(int y=0; y<height; y+=5){
for(int x=0; x<width; x+=5){
int pos= (y*width)+x;
float diff= abs(brightness(Pcamera.pixels[pos])-
brightness(Camera.pixels[pos]));
if(diff >50) diffcount++;
}
}
Pcamera.copy(Camera,0,0,width,height,0,0,width,height);
if(discard10>0) discard10–;//最初の10フレーム廃棄
if(num>0) diffcount=0;
if ((diffcount>30)&& num==0 && discard10==0) num=10;
if(start && num>0 && total<3000){//撮影写真画像10枚保存
int d=day();
int h=hour();
int m=minute();
int se=second();
String s=”i_”+d+”_”+h+”_”+m+”_”+se+”_”+num+”.jpg”; //画像を保存
save(s);
total++;//最大3000枚保存
num–;//インデックス番号を更新
if(num<0) num=0;
if(num==0) discard10=6;//時間稼ぎ
}
updatePixels();
}
void captureEvent(Capture Camera) { Camera.read();}//映像の読み込み
void keyPressed(){
if(key==’e’){ start=false; } //eキーで記録終了
if(key==’c’){ Camera.settings(); }}//cキーでカメラセッティング
===
昨日午前中、日本橋の三井のビルに行ってきました。