智能摄像头,AI热成像应用系统 MFC 界面实现

公司是做AI摄像头的,由于疫情原因,给设备增加了测温模块。老板要求做个PC版的展示界面。时间要求:越快越好。

好吧,那就在原版SDK上修改吧。

原版SDK是用Visual Studio C++实现的,还是MFC的界面,那就找个好用的界面伸缩库吧,在这里下载:https://www.codeproject.com/Articles/125068/MFC-C-Helper-Class-for-Window-Resizing

里面范例非常多,各式各样的都有。

先看看我的软件界面:

整体布局:

1:左上角两个视频框,一个普通视频,一个热力视频。左上角位置固定,随窗口大小变化而变化大小。

2:右侧按钮和图片、超标温度显示。大小固定,随窗口右侧移动而移动。

3:底部图片、所有温度显示。大小固定,随窗口底部移动而移动。

先看看第2个怎么做:

.h里声明变量:

#include "WndResizer.h"

CWndResizer m_resizer;

.cpp里加几行代码: 

BOOL CXXXDlg::OnInitDialog()
{
  CDialog::OnInitDialog();

  BOOL bOk = FALSE;

  bOk = m_resizer.SetAnchor(IDC_STATIC_LOGIN, ANCHOR_RIGHT | ANCHOR_TOP);

  ASSERT(bOk);

  return TRUE;
}

 其中IDC_STATIC_LOGIN是控件ID,ANCHOR_RIGHT表示右侧距离固定,ANCHOR_TOP表示顶部距离固定。

再看看第3个怎么做:

int id = m_pStatic_temp[i]->GetDlgCtrlID();

bOk = m_resizer.SetAnchor(id, ANCHOR_LEFT | ANCHOR_BOTTOM);

就换了一个参数而已,ANCHOR_LEFT表示左侧距离固定,ANCHOR_BOTTOM表示底部距离固定。

还剩第1个看看怎么做的,由于视频框是整个软件界面宽度减去右侧固定距离后各占一半,WndResizerApp不能实现,所以自己手工实现一个吧,代码也不多:

void CXXXDlg::OnSize(UINT nType, int cx, int cy)
{
	CDialog::OnSize(nType, cx, cy);
	if (nType == SIZE_MAXIMIZED || nType == SIZE_RESTORED)
	{
		UpdateVideoFrame();
	}
}

void CXXXDlg::UpdateVideoFrame()
{
	CRect rect;

	//当前整个窗口大小
	CWnd *pWnd = this->FromHandle(this->m_hWnd);
	CRect main_frame;
	pWnd->GetClientRect(&main_frame);

	//调整两个视屏框大小
	GetDlgItem(IDC_STATIC_VIDEO)->GetWindowRect(&rect);
	ScreenToClient(rect);
	rect.right = rect.left + (main_frame.Width() - VIDEO_RIHGT) / 2;
	rect.bottom = rect.top + (main_frame.Height() - VIDEO_BOTTOM);
	GetDlgItem(IDC_STATIC_VIDEO)->MoveWindow(rect);
	GetDlgItem(IDC_STATIC_VIDEO)->InvalidateRect(rect);

	rect.OffsetRect(CSize(rect.Width() + 7));
	GetDlgItem(IDC_STATIC_VIDEO2)->MoveWindow(rect);
	GetDlgItem(IDC_STATIC_VIDEO2)->InvalidateRect(rect);

	return;
}

先获取软件界面大小GetClientRect,第一个视频框左侧位置不变,右侧是整个软件界面宽度main_frame.Width()减去右侧固定距离VIDEO_RIHGT的一半,高度是整个软件界面高度main_frame.Height()减去底部固定距离VIDEO_BOTTOM;第二个视频框根据第一个视频框位置往右再小移一点点就行了。

看看效果吧:

 看看我用的摄像头长啥样:

智能摄像头,AI热成像应用系统 MFC 界面实现_第1张图片

 检测到温度超标的人脸图片再上传到公司的平台,用web页面形式展现出来,嗯,完美。

智能摄像头,AI热成像应用系统 MFC 界面实现_第2张图片

平台里再来个黑名单配置,告警配置,再结合原有的人脸识别功能,哇塞!应用前景前途无量啊,哈哈

智能摄像头,AI热成像应用系统 MFC 界面实现_第3张图片 

智能摄像头,AI热成像应用系统 MFC 界面实现_第4张图片 

你可能感兴趣的:(智能摄像头,AI热成像应用系统 MFC 界面实现)