防犯カメラ

パソコンにウエブカメラ(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キーでカメラセッティング

===
昨日午前中、日本橋の三井のビルに行ってきました。