//CGViewSystemDlg.cpp: implementation file
//
#include"stdafx.h"
#include"CGViewSystem.h"include”CGViewSystcmDlg.h”inc lude“ViewDl g.h"
#include"mmsystem.h" //VFW,多媒体管理模块
#pragma c omment(l ib,"winmm」 ib")
#include<lo cale.h>in c lude”C GVidEx.h"include“C GVideo.h”in c lu d e“C GD e f.h”
#include"FuncApi.h"
#in clud e"cvc am.h"
#include<cv.h>
#include<cxcore.h>
#include<highgui.h>
#ifdef.DEBUG
#define new DEBUG_NEW
#unde fTH IS_F ILE
static char THIS_F 1 LEU=_FILE_;
#endif#define WM_ADDTRAYICON WM_US ER+101 〃自定义消息(WM_ADDTRAYIC ON为自定义消息的标识也是一个常量)
#define m_dwPages 700〃静态内存分配700
/////////////////////////////////////////////////////////////////////////////
//CAboutDlg dialog used for App About class CAboutDlg:public CDialog{public:
CAboutDlgO;
//Dialog Data
//{{AFX_DATA(CAb outDlg)enum{ IDD=IDD_AB OUTB OX};
//} }AFX_DATA
//ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAb outDl g)protected:virtual void DoDataExchange(CDataExchange*pDX); //DDX/DDV support//}}AFX_V1 RTUAL//Implementationprotected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DE CLARE_ME S S AGE_MAP()
}
CAboutDlg: :CAboutDlg():CDialog(CAboutDlg: :IDD)
{
//{{AFX_DATAJNIT(CAb outDl g)
//}}AFX_DATA_INIT
}vo id CAb outDlg: :Do DataExchange(CDataExchange*pDX)
{
CDialog: :DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDl g)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_M S G_MAP(CAb outDlg)
//No message handlers
//}}AFX_M S G_MAP
END_ME S SAGE_MAP()lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
//CCGViewSystemDIg dialog
RECT rectList[MAX_VIDEO_S OURCE+1];
COLORREF gBackgroundColor=RGB(1(), 10, 10);int m_nCardTotal=0;extern int WinHeight;extern int WinWidth;
CvHaarClassifierCascade^cascade 1=(CvHaarClassifierCascade*)cvLoad(nC:\\Program
Files\\OpenCV\\data\\haarcascades\\haarcascade_fullbody.xml");
CvHaarClassifierCascade*cascade2=(CvHaarClassifierCascade*)cvLoad(MC:\\Pro gram
Files\\OpenCV\\data\\haarcascades\\haarcascade_upperbody.xmr');
CvHaarClassifierCascade*cascade3=(CvHaarClassifierCascade*)cvLoad("C:\\Program
Files\\OpenCV\\data\\haarcascades\\haarcascade」 owerbody.xml");CvHaarClassifierCascade*cascade4=(CvHaarClassifierCascade*)cvLoad("C:\\Program
Files\\OpenCV\\data\\haarcascades\\haarcascade_frontalface_alt2.xmr');
CvHaarClassifierCascade*cascade5=(CvHaarClassifierCascade*)cvLoad(
MC:\\Pro gram
Files\\OpenCV\\data\\haarcascades\\haarcascade_profileface.xmr,);
CCGViewSystemDl g: :CCGViewSystemDlg(CWnd*pParent/*二NULL*/)
:CDialog(CCGViewSystemDlg: :IDD,pParent)
{
//{{AFX_DATAJNIT(CCGViewSystemDl g)
//NOTE: the ClassWizard will add member initialization here将Cl ass Wizard添加成员初始化m_strBrightness=_T(””);m_strContrast=_T(“”)m_strHue=_T(”“)m_strS aturation=_T(””)m_bCheck11=FALSE;m_bCheckl2=FALSE;m_bCheckl3=FALSE;m_bCheckl4=FALSE;m_bCheck21=FALSE;m_bCheck22=FALSE;m_bCheck23=FALSE;m_bCheck24=FALSE;m_b Check31=FALSE;m_bCheck32=FALSE;m_bCheck33=FALSE;m_b Check34=FALSE;//}}AFX_DATA」N 1 T
//Note that Loadicon does not require a subsequent Destroylcon in Win32m_hlcon=AfxGetApp()->Lo adIcon(IDR_MAINFRAME);pSize=false;p Full=NULL;pHalf=NULL;m_nlog 1=0;
〃下面是录像参数设置m_p F il e =NULL;m_p s =NULL;m_p sC o mpre s se d=NULL;m_nTimeFrame=0;m_b Start=FALSE;m_b Rec ord=FALS E;m_nLastSelect=0;m_byBrightne ss=0;m_byContrast=0;m_byHue=0;m_bySaturation=0;m_b fireflag 1=FALSE;m_b fireflag2=FALSE;m_nMDeteNum=0;m_nHDeteNum=0;m_nFDeteNum=0;
////////////// 〃线程句柄//////////////////m_hHumanThre ad=NULL;m_hF ireThread=
NULL;
CGSTATUS status;
CGGetCardTotal(&m_nCardTotal);if(m_nCardTotal<=0)
C G_ME S SAGE(C G_NO_CARD_F OUND);for(int i=0; i<m_nCardTotal; i++)
{statu s=B eginC GC ard((i+1),&m_Disp De sc[i].hcg);C G_VERIFY(statu s);m_Disp De sc[i].p MB kMat=NULL;m_Disp De sc[i].p HBkMat=NULL;
m_DispDe sc[il.pFBkMat=NULL;m_DispDesc[i].pBmpInfo =NULL;m_DispDesc[i].rcClientWindow.left=0;m_DispDesc[i].rcClientWindow.top=0;m_DispDesc[i].rcClientWindow.right=0;m_DispDesc[i].rcClientWindow.bottom=0;m_DispDesc[i].areavary=0; //ifij积变化计数器m_DispDesc[i].area 1=0;//第1帧面枳m_Disp De sc fi].area2=0;//第8帧面积m_Disp De sc[i].areavaryrate=O;//面积变化率m_DispDesc[i].areacount=0; 〃每8帧计数器m_DispDesc[i].areacount 1=0; 〃面积变化void CCGViewSystemDlg: :DoDataExchange(CDataExchange*pDX)
CDialog: :DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCGViewSystemDl g)
DDX_Control(pDX, IDC_SYSTIME,m_csSysTime);
DDX_Control(pDX, IDC.SYSINFO,m_csSysInfo);
DDX_Contro l(pDX, IDC_S OURCE,m_cb Source);
DDX_Contro l(pDX, IDC_ADJUS T_SATURATION_SB,m_ctl S aturation SB);
DDX_C ontro l(p DX, IDC_ADJUS T_HUE_S B,m_ctlHue S B);
DDX_Control(pDX, IDC_ADJUST_CONTRAST_SB,m_ctlContrastSB);
DDX_Contro l(pDX, 1 DC_ADJUS T_BRIGHTNE S S_SB,m_ctlBrightnessSB);
DDX_Control(pDX, IDC_SETTING,m_pButton);
DDX_Text(pDX, IDC_ADJUS T_BRIGHTNE S S_TEXT,m_strBrightness);
DDX_Text(pDX, IDC_ADJUS T_CONTRAS T_TEXT,m_strContrast);
DDX_Text(p DX, IDC_ADJUS T_HUE_TEXT,m_strHue);
DDX_Text(p DX, IDC_ADJUS T_SATURAT ION_TEXT,m_strS aturation);
DDX_Check(pDX, IDC_CHECK1_1,m.bCheckll);
DDX_Check(pDX, IDC_CHECK1_2,m_bCheckl2);
DDX_Check(pDX, IDC_CHECK1_3,m_bCheckl3);
DDX_Check(pDX, IDC_CHECK1_4,m_bCheckl4);
DDX_Check(pDX, IDC_CHECK2_1,m_bCheck21);
DDX_Check(pDX, IDC_CHECK2_2,m_bCheck22);
DDX_Check(pDX, IDC_CHECK2_3,m_bCheck23);
DDX_Check(pDX, IDC_CHECK2_4,m_bCheck24);
DDX_Check(pDX, IDC_CHECK3_1,m_bCheck31);
DDX_Check(pDX, IDC_CHECK3_2,m_bCheck32);
DDX_Check(pDX, IDC_CHECK3_3,m_bCheck33);
DDX_Chcck(pDX, IDC_CHECK3_4,m_bCheck34);
//} }AF X_DATA_MAP
BEGIN_MES SAGE_MAP(CCGViewSystemDlg,CDialog)
//{{AFX_MS G_MAP(CCGViewSystemDlg)ON_WM_SYS COMMAND()
ON_WM_PAINT()
ON_BN_CLICKED(IDC_EXIT, OnExit) ON_BN_CL1 CKED(IDC_SETTINQ OnSetting)
ON_WM_H S CROLL()
ON_BN_CLICKE D(IDC_CAP TURE, On C apture)ON_BN_CLICKED(IDC_S TOPCAB On StopCap)
ON_BN_CLICKED(1 DC_S TARTRE C ORD,On Startrecord)
ON_WM_T IM E R()
ON_BN_CLICKED(IDC_VIEW,On View)
ON_BN_CLICKED(IDC_CHE CK 1_2,OnCheckl2)
ON_BN_CLICKED(1DC_CHECK 1_3,On Check 13)
ON_BN_CL1 CKED(1 DC_CHECK1_4,OnCheckl4)
ON_BN_CLICKED(IDC_CHECK2_1,OnCheck21)
ON_BN_CLICKED(IDC_CHECK2_2,OnCheck22)
ON_BN_CLICKED(IDC_CHE CK2_3,OnCheck23)
ON_BN_CLICKED(1 DC_CHECK2_4,OnCheck24)
ON_BN_CLICKED(IDC_CHE CK3_1,OnCheck31)
ON_CBN_SELCHANGE(IDC_S OURCE,On S elchange S ource)
ON_BN_CLICKED(IDC_CHECK1_1,OnCheckl 1)
ON_BN_CLICKED(IDC_CHE CK3_2,OnCheck32)
ON_BN_CLICKED(1 DC_CHECK3_3,OnCheck33)
ON_BN_CLICKED(IDC_CHE CK3_4,OnCheck34)
ON_WM_QUE RYDRAGIC ON()
ON_EN_CHANGE(IDC_VIDE OWIN,On Ch angeVide o win)
〃 } }AFX_M S G_MAP
END_ME S SAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CCGViewSystemDlg message handlers
BOOL CCGViewSystemDlg: :OnInitDialog()
{
CDialog: :OnInitDialog();
//Add"About. . ."menu item to system menu.
//IDM_ABOUTBOX must be in the system command range.
AS SERT((IDM_AB OUTB OX&OxFFFO)==IDM_AB OUTB OX);
AS SERT(IDM_AB OUTB OX<OxFOOO);
CMenu*p SysMenu=GetSysteniMenu(FALSE);if(p SysMenu!=NULL)
{
CString strAboutMenu;strAb outMenu.Lo ad String(ID S_AB OUTB OX);if(!strAb outMenu.IsEmpty())
{p SysMenu->AppendMenu(MF_SEPARATOR);
p SysMenu->App endMenu(MF_STRING, IDM_AB OUTB OX, strAb outMenu);
//Set the icon for this dialog.The framework does this automatically
//when the application's main window is not a dialog
Setlcon(m_hlcon,TRUE); //Set big icon
Setlcon(m_hlcon,FALSE); //Set small icon
//TODO:Add extra initialization herellllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
GetWindowRe ct(&p Full);pHalf=pFull;
CRect rect;m_p Button.GetWindo wRe ct(&re ct);pHalf.bottom=rect.bottom+20;
Chan geSize();
III IIIIIII IIIIIIII IIIIIII IIIIIII III IIIII II IIIII II IIIII II IIIII III IIHm_VideoWin.Sub classDlgItem(IDC_VIDEOWIN, this); 〃编辑框子类化
InitParamFromINI();
InitVideo Source();
InitC GC ard();
///////////////////设置Adjust参数//////////////////////m_ctlBrightne ss SB.S et S cro llRange(0,255,TRUE);m_ctlContrast SB.S et S crollRange(0,255,TRUE);m_ctlHue SB,S et S cro llRange(0,255,TRUE);m_ctl S aturationSB.S et S crollRange(0,255,TRUE);m_ctlBrightnessSB.SetScrollPo s(m_byBrightness);m_ctlContrastSB.SetScrollPo s(m_byContrast);m_ctlHueSB.SetScrolIPo s(m_byHue);m_ctl SaturationSB.SetScrollPo s(ni_bySaturation);m_strBrightne ss.Format(,,%d,\m_byBrightness);m_strContrast.Format(n%dn,m_byContrast);m_strHu e.Fo rmat(n%d,\m_b yHu e);m_str S aturation.Fo rmat(H%d,\m_b yS aturation);m_cb Source.SetCurSel(m_nLastSelect);
Up dateData(FALSE);lllllllllllllllllllllllllllllllllllllllllllllllllllllllllfor(int i=0; i<m_nCardTotal; i++)m_DispDesc[i].pBmpInfo (BITMAP INFO
l
CGS etVideo Standard(m_DispDescfil.hcg,m_Video Standard);
CGSetVideo Source(m_DispDesc[i].hcg,m_Video Source);
CGS etVideo F ormat(m_DispDe sc[i] .hcg,m_Video Format);
CGSetScanMode(m_DispDesc[i].hcg,m_VideoScan);
CGS etVideo F ormat(m_DispDe sc[i].hcg,RGB 888);
CGAdjustVideo(m_DispDesc[i].hcg,BRIGHTNE S S,m_byBrightness);
CGAdjustVideo(m_DispDesc[i].hcg,CONTRAST,m_byContrast);
C GAdju stVideo(m_Disp De scl iJ.hcg,HUE,m_byHue);
CGAdjustVideo(m_DispDesc[i].hcg,SATURATION,m_byS aturation);
C GS el InputWindow(m_Disp De sc[i].hcg,0,0,768,576);
CGSelectCryOSC(m_DispDesc[i].hcg,m_CryOsc);
}
}void CCGViewSystemDlg: :InitVideo Source()
{
CGSTATUS status=CG_OK;for(int i=0; i<m_nCardTotal; i++)
{
BOOL hPresent=FALSE;for(intj=0;j<MAX_VIDE O_S OURCE;++j) //按最大视频源数遍历该卡的所有视频源{
IndexToVideoSource(j,&m_Video Source);status=CGSetVideoSource(m_DispDesc[i].hcg,m_Video Source);
Sleep(l);status=CGVideoPresent(m_DispDesc[iJ.hcg,&bPresent);
〃检测源路是否连接视频信号。该接口仅支持CG300,QP300,VT 121型号图像卡if(status==CG_OK)
讦(bPresent)break;else if(status==CG_NOT_SUPPORT_INTERFACE)//如果返回
CG_NOT_SUPPORT_INTERFACE,该卡不支持CGVideoPresent接口break;
}if(!bPresent)
{ 〃如果没有找到视频源则设置默认源路为0
IndexToVideoSource(0,&m_Video Source);status=CGSetVideoSource(m_DispDesc[i].hcg,m_Video Source);void CCGViewSystemDlg: :OnSysCommand(UINT nID,LPARAM IParam) {if((nlD&OxFFFO)==IDM.AB OUTB OX)
{
Digital-vm是一家成立于2019年的国外主机商,商家提供VPS和独立服务器租用业务,其中VPS基于KVM架构,提供1-10Gbps带宽,数据中心可选包括美国洛杉矶、日本、新加坡、挪威、西班牙、丹麦、荷兰、英国等8个地区机房;除了VPS主机外,商家还提供日本、新加坡独立服务器,同样可选1-10Gbps带宽,最低每月仅80美元起。下面列出两款独立服务器配置信息。配置一 $80/月CPU:E3-...
Hostodo在九月份又发布了两款特别套餐,开设在美国拉斯维加斯、迈阿密和斯波坎机房,基于KVM架构,采用NVMe SSD高性能磁盘,最低1.5GB内存8TB月流量套餐年付34.99美元起。Hostodo是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,美国三个地区机房,支持支付宝或者PayPal、加密货币等付款。下面列出这两款主机配置信息。CP...
HostKvm又上新了,这次上架了2个线路产品:俄罗斯和香港高防VPS,其中俄罗斯经测试电信CN2线路,而香港高防VPS提供30Gbps攻击防御。HostKvm是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。俄罗斯VPSCPU:1core内存:2G...