⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pagecam.cpp

📁 机器人处理中使用USB摄像机的例子程序.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	else
	{
		GetDlgItem(IDC_SLIDER_BRIGHTNESS)->EnableWindow(TRUE);
		GetDlgItem(IDC_SLIDER_EXPOTIME)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_BRIGHTNESS)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_EXPO_TIME)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_LIGHT_SENS)->EnableWindow(TRUE);
		GetDlgItem(IDC_SLIDER_LIGHTSENS)->EnableWindow(TRUE);
	}

	UpdateData (FALSE);
}

void CPageCam::UpdateAll()
{
	UpdateHueGroup();
	UpdateBrightGroup();
	m_chk_filter = m_VideoFrame.GetLowLightFilter ();
	UpdateData (FALSE);
}

//*****************************************
//*  Check buttons functions			  *
//*****************************************
void CPageCam::OnCheckAutoHue() 
{
	m_chk_hue = !m_chk_hue;
	UpdateData (FALSE);
	if (m_chk_hue) 
	{
		m_VideoFrame.SetColorMode (1);
		if (!SetTimer (TIMER_HUE,INTERVAL,NULL)) AfxMessageBox (COULD_NOT_START_UP_TIMER);	
	}
	else 
	{
		m_VideoFrame.SetColorMode (0);
		KillTimer(TIMER_HUE);
	}
	UpdateHueGroup();	
}

void CPageCam::OnCheckAutoBrightness() 
{
	m_chk_bright = !m_chk_bright;
	UpdateData (FALSE);
	if (m_chk_bright) 
	{
		m_VideoFrame.SetBrightnessMode (1);
		if (!SetTimer (TIMER_BRIGHT,INTERVAL,NULL)) AfxMessageBox (COULD_NOT_START_UP_TIMER);
	}
	else 
	{
		m_VideoFrame.SetBrightnessMode (0);
		KillTimer(TIMER_BRIGHT);
	}
	UpdateBrightGroup();
}

void CPageCam::OnCheckLowLight() 
{
	m_chk_filter = !m_chk_filter;
	UpdateData (FALSE);
	if (m_chk_filter) m_VideoFrame.SetLowLightFilter (TRUE);
	else m_VideoFrame.SetLowLightFilter (FALSE);
}

void CPageCam::OnCheckPictureSmart() 
{
	m_chk_smart = !m_chk_smart;
	UpdateData (FALSE);
	if (m_chk_smart) m_VideoFrame.EnablePictureSmart (TRUE);
	else m_VideoFrame.EnablePictureSmart (FALSE);	
}

void CPageCam::OnCheckMirror() 
{
	m_chk_mirror = !m_chk_mirror;
	UpdateData (FALSE);
	if ((m_chk_mirror)  && (!m_chk_flip)) m_VideoFrame.SetOrientation (1);
	if ((m_chk_mirror)  && (m_chk_flip))  m_VideoFrame.SetOrientation (3);
	if ((!m_chk_mirror) && (!m_chk_flip)) m_VideoFrame.SetOrientation (0);
	if ((!m_chk_mirror) && (m_chk_flip))  m_VideoFrame.SetOrientation (2);
}

void CPageCam::OnCheckFlip() 
{
	m_chk_flip = !m_chk_flip;
	UpdateData (FALSE);
	if ((m_chk_mirror)  && (!m_chk_flip)) m_VideoFrame.SetOrientation (1);
	if ((m_chk_mirror)  && (m_chk_flip))  m_VideoFrame.SetOrientation (3);
	if ((!m_chk_mirror) && (!m_chk_flip)) m_VideoFrame.SetOrientation (0);
	if ((!m_chk_mirror) && (m_chk_flip))  m_VideoFrame.SetOrientation (2);
}

void CPageCam::OnCheckAutoInc() 
{
	UpdateData (TRUE);	
}

//*****************************************
//*  Buttons procedures					  *
//*****************************************

void CPageCam::OnButtonDisplayPicture() 
{
	m_pCurImg->DisplayImage (m_dc->m_hDC,197,20,320,240,0, ALL_IMAGE, SRCCOPY);
}

void CPageCam::OnButtonDisplayChannels() 
{
	CDlgRGBChan dlg(NULL,m_pCurImg);
	dlg.DoModal();
}

void CPageCam::OnButtonSettings() 
{
	m_VideoFrame.DlgVideoSource();
	UpdateAll();
}

void CPageCam::OnButtonDim() 
{
	m_VideoFrame.DlgVideoFormat();	 
}

void CPageCam::OnButtonDefault() 
{
	m_VideoFrame.RestoreDriverDefaults();
	Sleep (200);
	UpdateAll();
}

void CPageCam::OnButtonTakePicture() 
{
	UpdateData (TRUE);
	if (m_filename == "") return;
	m_filename.Format ("%s%s", m_filename, STRING_BMP_EXT);


	if ( !m_VideoFrame.SaveSingleFrameToFile (m_filename) )
	{
		AfxMessageBox ("Could not save file");
		return;
	}

	delete m_pCurImg;
	m_pCurImg = new CImage();
	m_pCurImg->ReadFromFile (m_filename);
	m_pCurImg->DisplayImage (m_dc->m_hDC,197,20,320,240,120, ALL_IMAGE, SRCCOPY);
	m_edit_filename = m_filename;

	m_filename = "Picture";
	if (m_chk_auto_inc) m_pict_count++;
	m_filename.Format ("%s%i", m_filename, m_pict_count);
	UpdateData (FALSE);
	CPageCam::OnPaint();
}

void CPageCam::OnButtonEnableVideo() 
{
	CString str;
	
	if (m_bLive == TRUE)
	{
		if (m_bInit == FALSE) 
		{
			if (m_VideoFrame.Initialization (0)) m_bInit = TRUE;
			else return;
		}
		m_VideoFrame.SetVideoDisplay(FALSE);
		m_bLive = FALSE;
		str = "Enable Video";
		m_but_enable.SetWindowText (str);
	}
	else
	{
		if (m_bInit == FALSE) 
		{
			if (m_VideoFrame.Initialization (0)) m_bInit = TRUE;
			else return;
		}
		m_VideoFrame.SetVideoDisplay(TRUE);
		m_bLive = TRUE;
		str = "Disable Video";
		m_but_enable.SetWindowText (str);
		CPageCam::UpdateAll();
	}
}

//*****************************************
//*  OnChangeEdit functions				  *
//*****************************************

void CPageCam::OnChangeEditCiandRed() 
{
	CString str;
	
	GetDlgItem (IDC_EDIT_CIAND_RED)->GetWindowText(str);
	if (str == "") return;
	
	UpdateData (TRUE);
	if (m_s_cyan <= 255) 
	{
		m_VideoFrame.SetCyanRedColor (m_s_cyan);
		UpdateHueGroup();
	}
}

void CPageCam::OnChangeEditYelBlue() 
{
	CString str;
	
	GetDlgItem (IDC_EDIT_YEL_BLUE)->GetWindowText(str);
	if (str == "") return;
	
	UpdateData (TRUE);	
	if (m_s_yel <= 255) 
	{
		m_VideoFrame.SetYellowBlueColor (m_s_yel);
		UpdateHueGroup();
	}
}

void CPageCam::OnChangeEditContrast() 
{
	CString str;
	
	GetDlgItem (IDC_EDIT_CONTRAST)->GetWindowText(str);
	if (str == "") return;	
	
	UpdateData (TRUE);
	if (m_s_contrast <= 255) 
	{
		m_VideoFrame.SetContrastMagnitude (m_s_contrast);
		UpdateBrightGroup();
	}
}

void CPageCam::OnChangeEditExpoTime() 
{
	CString str;
	
	GetDlgItem (IDC_EDIT_EXPO_TIME)->GetWindowText(str);
	if (str == "") return;

	UpdateData (TRUE);
	if (m_s_expo <= 255) 
	{
		m_VideoFrame.SetExposure (m_s_expo);
		UpdateBrightGroup();
	}
}

void CPageCam::OnChangeEditLightSens() 
{
	CString str;
	
	GetDlgItem (IDC_EDIT_LIGHT_SENS)->GetWindowText(str);
	if (str == "") return;

	UpdateData (TRUE);
	if (m_s_light <= 255) 
	{
		m_VideoFrame.SetGain(m_s_light);
		UpdateBrightGroup();
	}
}

void CPageCam::OnChangeEditSaturation() 
{
	CString str;
	
	GetDlgItem (IDC_EDIT_SATURATION)->GetWindowText(str);
	if (str == "") return;
	
	UpdateData (TRUE);
	if (m_s_saturation <= 255) 
	{
		m_VideoFrame.SetSaturation (m_s_saturation);
		UpdateHueGroup();
	}
}

void CPageCam::OnChangeEditBrightness() 
{	
	CString str;
	
	GetDlgItem (IDC_EDIT_BRIGHTNESS)->GetWindowText(str);
	if (str == "") return;

	UpdateData (TRUE);
	if (m_s_bright <= 255) 
	{
		m_VideoFrame.SetBrightnessMagnitude (m_s_bright);
		UpdateBrightGroup();
	}
}

void CPageCam::OnChangeEditVideoQual() 
{
	CString str;
	
	GetDlgItem (IDC_EDIT_VIDEO_QUAL)->GetWindowText(str);
	if (str == "") return;
	
	UpdateData (TRUE);
	if (m_s_video <= 4) 
	{
		m_VideoFrame.SetCompression (m_s_video);
		m_slider_video.SetPos (m_s_video);
	}
}

void CPageCam::OnChangeEditFilename() 
{
	UpdateData (TRUE);
}

//*****************************************
//*  Registry procedures				  *
//*****************************************
void CPageCam::Read_Registry()
{
	CWinApp* pApp = AfxGetApp();

	// The check
	m_chk_auto_inc  = (BOOL) pApp->GetProfileInt	 (SECTION_CAM,ITEM_AUTO_INC,FALSE);
	m_chk_bright    = (BOOL) pApp->GetProfileInt	 (SECTION_CAM,ITEM_AUTO_BRIGHT,TRUE);
	m_chk_hue	    = (BOOL) pApp->GetProfileInt	 (SECTION_CAM,ITEM_AUTO_HUE,TRUE);
	m_chk_filter    = (BOOL) pApp->GetProfileInt	 (SECTION_CAM,ITEM_LIGHT_FILTER,TRUE);
	m_chk_mirror    = (BOOL) pApp->GetProfileInt	 (SECTION_CAM,ITEM_MIRROR,FALSE);
	m_chk_flip      = (BOOL) pApp->GetProfileInt	 (SECTION_CAM,ITEM_FLIP,FALSE);

	// The edit fields
	m_s_cyan		= pApp->GetProfileInt	 (SECTION_CAM,ITEM_CYANRED,128);
	m_s_yel			= pApp->GetProfileInt	 (SECTION_CAM,ITEM_YELLOWBLUE,128);
	m_s_saturation	= pApp->GetProfileInt	 (SECTION_CAM,ITEM_SATURATION,128);
	m_s_bright		= pApp->GetProfileInt	 (SECTION_CAM,ITEM_BRIGHTNESS,128);
	m_s_contrast	= pApp->GetProfileInt	 (SECTION_CAM,ITEM_CONTRAST,128);
	m_s_expo		= pApp->GetProfileInt	 (SECTION_CAM,ITEM_EXPO,128);
	m_s_light		= pApp->GetProfileInt	 (SECTION_CAM,ITEM_LIGHT_SENS,128);
	m_s_video		= pApp->GetProfileInt	 (SECTION_CAM,ITEM_VIDEO,4);

	m_bLive			= (BOOL) pApp->GetProfileInt	 (SECTION_CAM,ITEM_LIVE,FALSE);

    UpdateData (FALSE);
}

void CPageCam::Store_Registry()
{
	CWinApp* pApp = AfxGetApp();

	// The check
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_AUTO_INC, m_chk_auto_inc);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_AUTO_BRIGHT,m_chk_bright );
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_AUTO_HUE,m_chk_hue);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_LIGHT_FILTER,m_chk_filter);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_MIRROR,m_chk_mirror);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_FLIP,m_chk_flip);

	pApp->WriteProfileInt	(SECTION_CAM, ITEM_CYANRED,m_s_cyan);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_YELLOWBLUE,m_s_yel	);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_SATURATION,m_s_saturation);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_BRIGHTNESS,m_s_bright);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_CONTRAST,m_s_contrast);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_EXPO,m_s_expo);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_LIGHT_SENS,m_s_light);
	pApp->WriteProfileInt	(SECTION_CAM, ITEM_VIDEO,m_s_video);

	pApp->WriteProfileInt	(SECTION_CAM, ITEM_LIVE, (int) m_bLive);
}

//*****************************************
//*  Other procedures					  *
//*****************************************

BOOL CPageCam::OnSetActive() 
{
	return CPropertyPage::OnSetActive();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -