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

📄 bcameraset.cpp

📁 该程序实现FIRE足球机器人竞赛中的3:3比赛源码
💻 CPP
字号:
// BCameraSet.cpp: implementation of the CBCameraSet class.
//
//////////////////////////////////////////////////////////////////////

//#include "stdafx.h"
//#include "A101Viewer.h"
//#include "BCameraSet.h"

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


#include "stdafx.h"
//#include "mainfrm.h"
#include "BCameraSet.h"
//#include "CameraManager.h"
//#include "ChildFrm.h"
//#include "utility.h"
#include "ColorConversion.h"
//#include "CreateCorrectionTable.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBCameraSet::CBCameraSet()
{
	// initialize LUTs for Bayer to RGB conversion
	m_GainR = 1.0 ;
	m_GainB = 1.0 ;
	SetRGain(m_GainR);
	SetBGain(m_GainB);
	for ( int i = 0; i < 256; i++ )
	{
		m_pLutG[i] = i;
	}

	m_ColorCode = DCSColor_Mono8;//DCSColor_Raw8;//
	//m_ColorCode = DCSColor_Raw8;
	m_ConvertMono8ToRGB = 4;
}

CBCameraSet::~CBCameraSet()
{

}




//------------------------------------------------------------------------------
// void CCamera::SetBGain(double gain)
// Author: 
//------------------------------------------------------------------------------
/**
* Set the gain for the blue channel and recalculate the according LUT for the conversion
* routine
*
* \param     gain
* \return    
*
*/
//------------------------------------------------------------------------------

void CBCameraSet::SetBGain(double gain)
{
  assert ( gain > 0 );
  for ( int i = 0; i < 256; i++ )
  {
    m_pLutB[i] = min(255, i * gain ) ;
  }
  m_GainB = gain;

}

//------------------------------------------------------------------------------
// void CCamera::SetRGain(double gain)
// Author: 
//------------------------------------------------------------------------------
/**
* Set the gain for the red channel and recalculate the according LUT for the conversion
* routine
*
* \param     gain
* \return    
*
*/
//------------------------------------------------------------------------------


void CBCameraSet::SetRGain(double gain)
{
  assert ( gain > 0 );
  for ( int i = 0; i < 256; i++ )
  {
    m_pLutR[i] = min(255, i * gain ) ;
  }
  m_GainR = gain;
}


//------------------------------------------------------------------------------
// void CCamera::ConvertBitmap(CBcamBitmap* *ppDest, CBcamBitmap* *ppSource)
// Author: 
//------------------------------------------------------------------------------
/**
* If required, convert raw Bayer8 or YUV422 data into a 24 bit RGB bitmap
*
* \param     *ppDest
* \param     *ppSource
* \return    
*
* <type Return description here>
* 
* \see       <delete line if not used>
* \todo      
*/
//------------------------------------------------------------------------------

void CBCameraSet::ConvertBitmap(PBYTE pDest, PBYTE pSource, CSize &size)
{
  switch ( m_ColorCode )
  {
  case DCSColor_Mono8 :
    if ( m_ConvertMono8ToRGB )
    {
      // Bayer -> RGB conversion Raw8->24Bit
      CColorConversion::ConvertMono8ToRGB(pDest, pSource, size, (CColorConversion::PatternOrigin_t) m_ConvertMono8ToRGB, m_pLutR, m_pLutG, m_pLutB);
    }
    else
    {
      // Nothing to be done ( mono8 image data). Let the bitmap point to the raw data
      memcpy(pDest, pSource, size.cx*size.cy);
    }
    break;
  case DCSColor_YUV8_4_2_2 :
    CColorConversion::ConvertYUV422ToRGB(pDest, pSource, size);
    break;
  default:
    throw BcamException(BCAM_E_UNSUPPORTED_COLOR_CODE, "CCamera::ConvertBitmap", &BcamUtility::ColorCodeName(m_ColorCode) );
  }
}
//------------------------------------------------------------------------------

⌨️ 快捷键说明

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