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

📄 dlgrgbchan.cpp

📁 机器人处理中使用USB摄像机的例子程序.
💻 CPP
字号:
// DlgRGBChan.cpp : implementation file
//

#include "stdafx.h"
#include "USBCam.h"
#include "DlgRGBChan.h"
#include "Utils.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgRGBChan dialog


/*CDlgRGBChan::CDlgRGBChan(CWnd* pParent )
	: CDialog(CDlgRGBChan::IDD, pParent)
{
	
}*/

CDlgRGBChan::CDlgRGBChan(CWnd* pParent, CImage *src)
	: CDialog(CDlgRGBChan::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgRGBChan)
	m_radio_chan = 0;
	//}}AFX_DATA_INIT

	pSrc = src;

	pImgR = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
	pImgG = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
	pImgB = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
	pImgBW = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
	pImgHSI = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
	pTemp  = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);

	src->ExtractChannel (pImgR, RED_CHANNEL);
	src->ExtractChannel (pImgG, GREEN_CHANNEL);
	src->ExtractChannel (pImgB, BLUE_CHANNEL);
	src->ExtractChannel (pImgBW, GRAY_CHANNEL);
	src->HSI_Values (pImgHSI);
}


void CDlgRGBChan::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgRGBChan)
	DDX_Radio(pDX, IDC_RADIO_RED, m_radio_chan);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgRGBChan, CDialog)
	//{{AFX_MSG_MAP(CDlgRGBChan)
	ON_BN_CLICKED(IDC_RADIO_RED, OnRadioRed)
	ON_BN_CLICKED(IDC_RADIO_GREEN, OnRadioGreen)
	ON_BN_CLICKED(IDC_RADIO_BLUE, OnRadioBlue)
	ON_BN_CLICKED(IDC_RADIO_GRAY, OnRadioGray)
	ON_WM_PAINT()
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_RADIO_HUE, OnRadioHue)
	ON_BN_CLICKED(IDC_RADIO_INTENSITY, OnRadioIntensity)
	ON_BN_CLICKED(IDC_RADIO_SATURATION, OnRadioSaturation)
	ON_BN_CLICKED(IDC_RADIO_SOURCE, OnRadioSource)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgRGBChan message handlers

void CDlgRGBChan::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CClientDC dcd (this);
	
	UpdateData (TRUE);

	switch (m_radio_chan)
	{
	case 0 :
		pImgR->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);	
		break;

	case 1 :
		pImgG->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
		break;

	case 2 :
		pImgB->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
		break;

	case 3 :
		pImgBW->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);	
		break;

	case 4 :
		pImgHSI->ExtractChannel (pTemp, HUE_CHANNEL);
		pTemp->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
		break;

	case 5 :
		pImgHSI->ExtractChannel (pTemp, SAT_CHANNEL);
		pTemp->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
		break;

	case 6 :
		pImgHSI->ExtractChannel (pTemp, INT_CHANNEL);
		pTemp->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);	
		break;

	case 7 :
		pSrc->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);	
		break;

	default : AfxMessageBox ("This channel doesn't exists !"); break;
	}
}

void CDlgRGBChan::OnRadioRed() 
{
	m_radio_chan = 0;
	UpdateData (FALSE);
	CDlgRGBChan::OnPaint(); 
}

void CDlgRGBChan::OnRadioGreen() 
{
	m_radio_chan = 1;
	UpdateData (FALSE);
	CDlgRGBChan::OnPaint(); 
}

void CDlgRGBChan::OnRadioBlue() 
{
	m_radio_chan = 2;
	UpdateData (FALSE);
	CDlgRGBChan::OnPaint();
}

void CDlgRGBChan::OnRadioGray() 
{
	m_radio_chan = 3;
	UpdateData (FALSE);
	CDlgRGBChan::OnPaint();
}

void CDlgRGBChan::OnRadioHue() 
{
	m_radio_chan = 4;
	UpdateData (FALSE);
	CDlgRGBChan::OnPaint();	
}

void CDlgRGBChan::OnRadioSaturation() 
{
	m_radio_chan = 5;
	UpdateData (FALSE);
	CDlgRGBChan::OnPaint();	
}

void CDlgRGBChan::OnRadioIntensity() 
{
	m_radio_chan = 6;
	UpdateData (FALSE);
	CDlgRGBChan::OnPaint();	
}

void CDlgRGBChan::OnRadioSource() 
{
	m_radio_chan = 7;
	UpdateData (FALSE);
	CDlgRGBChan::OnPaint();		
}

void CDlgRGBChan::OnDestroy() 
{
	CDialog::OnDestroy();
	delete pTemp;	
	delete pImgR;
	delete pImgG;
	delete pImgB;
	delete pImgBW;
	delete pImgHSI;	
}


⌨️ 快捷键说明

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