电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

如何把摄像头做监控


发布日期:2021/5/14
 

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

一、创建窗体

创建窗体Form1,将它调整到适当大小,在上面放上Panel1、Label1、StatusBar1、ScrollBar1、GroupBox1、Memo1、Button1、Button2和Timer1控件,将Button1的caption属性改为“启动摄像头”,Button2的Caption属性改为“开始监控”,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这时你偷偷地把手伸过去抓苹果,是不是报警了?同样你还可以将摄像头对准你房间的门,防止你在聚精会神地玩电脑时,有人突然窜到你的背后吓唬你,在使用过程中还可以任意调整监视系统的灵敏度。

上一篇:注册表加锁的方法

下一篇:C编程技巧几列