您现在的位置: 电脑知识网 >> 菜鸟学堂 >> 软件应用问答 >> 正文

如何把摄像头做jian控

 日期:2008-5-11 17:53:14 作者: 您有问题?请联系我们 繁體中文

  花了一百块钱买的USB摄像头除了跟几个朋友聊视频外,平时就一直处于闲置状态。一日我突发奇想:能不能用它来做个视频jian视报警系统,经过本人一段时间的研究发现还真是可以,只要使用C++ Builder6就很容易实现这个功能,而且效果还是不错的,现在就把自己的心得和大家分享一下!www.pc235.com推荐文章

一、创建窗体
  创建窗体Form1,将它调整到适当大小,在上面放上Panel1、Label1、StatusBar1、ScrollBar1、GroupBox1、Memo1、Button1、Button2和Timer1控件,将Button1的caption属性改为“启动摄像头”,Button2的Captio n属性改为“开始jian控”,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("有人tou苹果!"+fp+IntToStr(sizetemp));//产生报警日志
  sndPlaySound("xx.wav",SND_ASYNC);//播放警报声
  }
五、设置报警声
  在程序目录下面放上你喜欢听到的报警声音,并将声音文件命名为xx.wav,运行程序,点击“启动摄像头”将摄像头对准桌面上的苹果,当画面基本稳定时再按“开始jian控”。这时你toutou地把手伸过去抓苹果,是不是报警了?同样你还可以将摄像头对准你房间的门,防止你在聚精会神地玩电脑时,有人突然窜到你的背后吓唬你,在使用过程中还可以任意调整jian视系统的灵敏度。

 

更多内容请看 电脑知识商网 > > 菜鸟学堂 > > 软件应用问答专题


  • 上一个文章:

  • 下一个文章:
  • Pc235免费的教育教学网络资源
    【频道更新】
    【相关推荐】
    电脑知识商网 版权所有 严禁转载本站文章 违者追究法律责任
    copyright © 2007 www.shenmeshi.org.cn online services. all rights reserved. ICP备案:渝ICP备07500547号