熱點推薦:
您现在的位置: 電腦知識網 >> 軟件專區 >> 正文

如何把攝像頭做監控

2022-06-13   來源: 軟件專區 

  花了一百塊錢買的USB攝像頭除了跟幾個朋友聊視頻外,平時就一直處於閒置狀態。一日我突發奇想:能不能用它來做個視頻監視報警系統,經過本人一段時間的研究發現還真是可以,只要使用C++ Builder6就很容易實現這個功能,而且效果還是不錯的,現在就把自己的心得和大家分享一下!www.sq120.com推薦文章

一、創建窗體
  創建窗體Form1,將它調整到適當大小,在上面放上Panel1、Label1、StatusBar1、ScrollBar1、GroupBox1、Memo1、Button1、Button2和Timer1控件,將Button1的caption屬性改為“啟動攝像頭”,Button2的Captio n屬性改為“開始監控”,Label1的Caption改為“靈敏度”,修改Timer1的Enabled為false,Interval為500,修改ScrollBar1的Min為100,Max為1000。

二、增加頭文件
  打開頭文件:Unit1.h,為它增加兩個頭文件:
  #include "jpeg.hpp"
  #include "vfw.h"
  修改private段如下:
  private: // User declarations
  CAPDRIVERCAPS gCapDrvCaps;
  int sizef,sizetemp,jd;
  int __fastcall getfiles();
  void __fastcall scanpic();
三、添加函數
  打開Unit1.cpp文件,添加兩個函數:
  void __fastcall TForm1::scanpic()
  {
  Graphics::TBitmap *Bitmap=new Graphics::TBitmap;
  TJPEGImage *jmp= new TJPEGImag
  e;
  Bitmap->Width=Form1->Panel1->Width;
  Bitmap->Height=Form1->Panel1->Height;
  Bitmap->PixelFormat=pf32bit;
  ::BitBlt(Bitmap->Canvas->Handle,Form1->Panel1->Left,Form1->Panel1->Top,Form1->Panel1->Width,Form1->Panel1->Height, Form1->Canvas->Handle,0,0,SRCCOPY);
  // Bitmap->SaveToFile("tu.bmp");
  jmp->Assign(Bitmap);
  jmp->Compress();
  jmp->SaveToFile("temp.jpg");
  delete jmp;
  delete Bitmap;
  }
  //-----------------
  int __fastcall TForm1::getfiles()
  {
  HANDLE HMyFile=::CreateFile("aa.jpg",GENERIC_READ,0,0,OPEN_EXIS
  TING,FILE_ATTRIBUTE_NORMAL,0);
  double sized=(double)::GetFileSize((void *)HMyFile,NULL);
  CloseHandle(HMyFile);
  return sized;
  }
  
四、為按鈕添加代碼
  雙擊Button1按鈕,為它添加OnClick事件代碼如下:
  HWND capWin = capCreateCapture
  Window ((LPSTR) "Video Windows",WS_CHILD | WS_VISIBLE,Panel1->Left,Panel1->Top,Panel1->Width,Panel
  1->Height,(HWND) Handle,1);
  if(capDriverConnect(capWin,0))
  {
  capDriverGetCaps(capWin,&gCapDrvCaps,sizeof(CAPDRIVERCAPS));
  if(gCapDrvCaps.fCaptureInitialized)
  {
  capPreviewRate(capWin,66);
  capPreview(capWin,TRUE);
  }
  else
  {
  StatusBar1->SimpleText="攝像頭初始化失敗!";
  }
  }
  else
  {
  StatusBar1->SimpleText="攝像頭連接不成功!";
  }
  雙擊Button2為它添加OnClick事件代碼如下:
  jd=ScrollBar1->Position;
  scanpic();
  sizef=getfiles();
  Timer1->Enabled=true;
  雙擊ScrollBar1為它添加OnChange事件如下:
  jd=ScrollBar1->Position;
  雙擊Timer1為它添加OnTimer事件如下:
  scanpic();
  sizetemp=getfiles();
  if(abs(sizetemp-sizef)>jd)
  {
  AnsiString fp;
  DateTimeToString(fp,"yyyy'年'mm'月'dd'日'mm'分'ss'秒'",Now());
  Memo1->Lines->Add("有人偷蘋果!"+fp+IntToStr(sizetemp));//產生報警日志
  sndPlaySound("xx.wav",SND_ASYNC);//播放警報聲
  }
五、設置報警聲
  在程序目錄下面放上你喜歡聽到的報警聲音,並將聲音文件命名為xx.wav,運行程序,點擊“啟動攝像頭”將攝像頭對准桌面上的蘋果,當畫面基本穩定時再按“開始監控”。tW.WinGWIT.CoM這時你偷偷地把手伸過去抓蘋果,是不是報警了?同樣你還可以將攝像頭對准你房間的門,防止你在聚精會神地玩電腦時,有人突然竄到你的背後嚇唬你,在使用過程中還可以任意調整監視系統的靈敏度。

 
From:http://tw.wingwit.com/Article/Software/201309/334.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.