📄 imagemanager.cpp
字号:
// ImageManager.cpp: implementation of the CImageManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ImageManager.h"
#include "math.h"
#include "Afxtempl.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CImageManager::CImageManager()
{
g_phei=0;
g_v=0;
}
CImageManager::~CImageManager()
{
}
/************************************************************************/
/* InitCardsProperty() */
/************************************************************************/
/* */
/*功能描述: 初始化类内相关变量以及图像卡属性变量。 */
/* */
/*输入参数: 无 */
/* */
/*调用前提: 无 */
/* */
/* 返回值: 无 */
/* */
/*变量输出: 类内各变量: -四路图像卡打开标志设为false; */
/* -四路图像卡采集标志设为false; */
/* -四路图像卡句柄设为NULL; */
/* -四路输出图像内存指针为NULL。 */
/* 图像属性变量: -四路默认输入源设为复合视频第二路; */
/* -四路图像格式设为RGB888; */
/* -四路视频制式设为PAL; */
/* -四路扫描方式设为FRAME; */
/* -四路图像采集无镜像; */
/* -四路图像无GAMMAR校正; */
/* -四路晶振为28M; */
/* -四路图像默认亮度值为128; */
/* -四路图像默认对比度值为128; */
/* -四路图像默认色调为128; */
/* -四路图像默认饱和值为128; */
/* */
/*其它说明; 该函数在该类建立时,首先调用该函数对其初始化;但该函数只 */
/* 是设置相关变量的值, 若要真正按照默认值设置图像卡, 需要 */
/* 在调用该函数后, 调用OpenCard()打开图像卡, 然后调用函数 */
/* UpdataCardAttribute()对图像卡属性进行配置。 */
/* */
/************************************************************************/
void CImageManager::InitCardsProperty()
{
m_CardOpenState.m_bCard1Opened=false;
m_CardOpenState.m_bCard2Opened=false;
m_CardOpenState.m_bCard3Opened=false;
m_CardOpenState.m_bCard4Opened=false;
m_CardCapState.m_bCard1Capturing=false;
m_CardCapState.m_bCard2Capturing=false;
m_CardCapState.m_bCard3Capturing=false;
m_CardCapState.m_bCard4Capturing=false;
m_CardHandle.m_hCard1=NULL;
m_CardHandle.m_hCard2=NULL;
m_CardHandle.m_hCard3=NULL;
m_CardHandle.m_hCard4=NULL;
m_CardProperty1.m_bMirrorEnabled=false;
m_CardProperty1.m_byteBrightness=128;
m_CardProperty1.m_byteContrast=128;
m_CardProperty1.m_byteHue=128;
m_CardProperty1.m_byteSaturation=128;
m_CardProperty1.m_CryOsc=CRY_OSC_28M;
m_CardProperty1.m_VideoFormat=RGB888;
m_CardProperty1.m_VideoGammaCorr=NO_GAMMACORR;
m_CardProperty1.m_VideoMirror=HOR_DIR;
m_CardProperty1.m_VideoScanMode=FRAME;
m_CardProperty1.m_VideoStandard=PAL;
m_CardProperty1.m_VideoSource.type=COMPOSITE_VIDEO;
m_CardProperty1.m_VideoSource.nIndex=1;
m_CardProperty2.m_bMirrorEnabled=false;
m_CardProperty2.m_byteBrightness=128;
m_CardProperty2.m_byteContrast=128;
m_CardProperty2.m_byteHue=128;
m_CardProperty2.m_byteSaturation=128;
m_CardProperty2.m_CryOsc=CRY_OSC_28M;
m_CardProperty2.m_VideoFormat=RGB888;
m_CardProperty2.m_VideoGammaCorr=NO_GAMMACORR;
m_CardProperty2.m_VideoMirror=HOR_DIR;
m_CardProperty2.m_VideoScanMode=FRAME;
m_CardProperty2.m_VideoStandard=PAL;
m_CardProperty2.m_VideoSource.type=COMPOSITE_VIDEO;
m_CardProperty2.m_VideoSource.nIndex=1;
m_CardProperty3.m_bMirrorEnabled=false;
m_CardProperty3.m_byteBrightness=128;
m_CardProperty3.m_byteContrast=128;
m_CardProperty3.m_byteHue=128;
m_CardProperty3.m_byteSaturation=128;
m_CardProperty3.m_CryOsc=CRY_OSC_28M;
m_CardProperty3.m_VideoFormat=RGB888;
m_CardProperty3.m_VideoGammaCorr=NO_GAMMACORR;
m_CardProperty3.m_VideoMirror=HOR_DIR;
m_CardProperty3.m_VideoScanMode=FRAME;
m_CardProperty3.m_VideoStandard=PAL;
m_CardProperty3.m_VideoSource.type=COMPOSITE_VIDEO;
m_CardProperty3.m_VideoSource.nIndex=1;
m_CardProperty4.m_bMirrorEnabled=false;
m_CardProperty4.m_byteBrightness=128;
m_CardProperty4.m_byteContrast=128;
m_CardProperty4.m_byteHue=128;
m_CardProperty4.m_byteSaturation=128;
m_CardProperty4.m_CryOsc=CRY_OSC_28M;
m_CardProperty4.m_VideoFormat=RGB888;
m_CardProperty4.m_VideoGammaCorr=NO_GAMMACORR;
m_CardProperty4.m_VideoMirror=HOR_DIR;
m_CardProperty4.m_VideoScanMode=FRAME;
m_CardProperty4.m_VideoStandard=PAL;
m_CardProperty4.m_VideoSource.type=COMPOSITE_VIDEO;
m_CardProperty4.m_VideoSource.nIndex=1;
m_CardMemState.m_pucOutputImage_Card1=NULL;
m_CardMemState.m_pucOutputImage_Card2=NULL;
m_CardMemState.m_pucOutputImage_Card3=NULL;
m_CardMemState.m_pucOutputImage_Card4=NULL;
m_CardMemState.m_gOutputImage_Card1=NULL;
m_CardMemState.m_gOutputImage_Card2=NULL;
m_CardMemState.m_gOutputImage_Card3=NULL;
m_CardMemState.m_gOutputImage_Card4=NULL;
}
/************************************************************************/
/* OpenCard() */
/************************************************************************/
/* */
/*功能描述: 打开图像卡 */
/* */
/*输入参数: int nCardNo;-卡号,取值范围1-4 */
/* */
/*调用前提: 无 */
/* */
/* 返回值: BOOL; =TRUE -打开成功; */
/* =FALSE -打开失败; */
/* */
/*变量输出: 成功-m_CardOpenState中相应于nCardNo的标志为置为true,图像 */
/* 卡句柄保存于m_CardHandle的相应变量中。 */
/* */
/*其它说明; 对图像采集卡进行其它操作,必须首先调用该函数打开采集卡。 */
/* */
/************************************************************************/
BOOL CImageManager::OpenCard(int nCardNo)
{
CGSTATUS nStatus;
switch(nCardNo)
{
case 1:
if(m_CardOpenState.m_bCard1Opened)
return TRUE;
nStatus=BeginCGCard(nCardNo,&m_CardHandle.m_hCard1);
if(nStatus==CG_OK)
{
m_CardOpenState.m_bCard1Opened=true;
return TRUE;
}
else
{
m_CardOpenState.m_bCard1Opened=false;
m_CardHandle.m_hCard1=NULL;
return FALSE;
}
break;
case 2:
if(m_CardOpenState.m_bCard2Opened)
return TRUE;
nStatus=BeginCGCard(nCardNo,&m_CardHandle.m_hCard2);
if(nStatus==CG_OK)
{
m_CardOpenState.m_bCard2Opened=true;
return TRUE;
}
else
{
m_CardOpenState.m_bCard2Opened=false;
m_CardHandle.m_hCard2=NULL;
return FALSE;
}
break;
case 3:
if(m_CardOpenState.m_bCard3Opened)
return TRUE;
nStatus=BeginCGCard(nCardNo,&m_CardHandle.m_hCard3);
if(nStatus==CG_OK)
{
m_CardOpenState.m_bCard3Opened=true;
return TRUE;
}
else
{
m_CardOpenState.m_bCard3Opened=false;
m_CardHandle.m_hCard3=NULL;
return FALSE;
}
break;
case 4:
if(m_CardOpenState.m_bCard4Opened)
return TRUE;
nStatus=BeginCGCard(nCardNo,&m_CardHandle.m_hCard4);
if(nStatus==CG_OK)
{
m_CardOpenState.m_bCard4Opened=true;
return TRUE;
}
else
{
m_CardOpenState.m_bCard4Opened=false;
m_CardHandle.m_hCard4=NULL;
return FALSE;
}
break;
default:
return FALSE;
break;
}
}
/************************************************************************/
/* CloseCard() */
/************************************************************************/
/* */
/*功能描述: 关闭图像卡 */
/* */
/*输入参数: int nCardNo;-卡号,取值范围1-4 */
/* */
/*调用前提: -调用该函数前,首先调用StopCapture()停止采集过程; */
/* -如果曾使用函数SetOutImageMem分配过图像处理内存,最好先 */
/* 释放该部分内存,即先调用函数FreeOutImageMem()。 */
/* */
/* 返回值: BOOL; =TRUE -关闭成功; */
/* =FALSE -失败; */
/* */
/*变量输出: 成功-m_CardOpenState中相应于nCardNo的标志为置false,相应 */
/* 的图像卡句柄置为NULL。 */
/* */
/*其它说明; 在退出应用程序前,调用该函数关闭图像卡。 */
/* */
/************************************************************************/
BOOL CImageManager::CloseCard(int nCardNo)
{
CGSTATUS nStatus;
switch(nCardNo)
{
case 1:
if(!m_CardOpenState.m_bCard1Opened)
return TRUE;
if(m_CardCapState.m_bCard1Capturing)
return FALSE;
nStatus=EndCGCard(m_CardHandle.m_hCard1);
if(nStatus==CG_OK)
{
m_CardOpenState.m_bCard1Opened=false;
m_CardHandle.m_hCard1=NULL;
return TRUE;
}
return FALSE;
break;
case 2:
if(!m_CardOpenState.m_bCard2Opened)
return TRUE;
if(m_CardCapState.m_bCard2Capturing)
return FALSE;
nStatus=EndCGCard(m_CardHandle.m_hCard2);
if(nStatus==CG_OK)
{
m_CardOpenState.m_bCard2Opened=false;
m_CardHandle.m_hCard2=NULL;
return TRUE;
}
return FALSE;
break;
case 3:
if(!m_CardOpenState.m_bCard3Opened)
return TRUE;
if(m_CardCapState.m_bCard3Capturing)
return FALSE;
nStatus=EndCGCard(m_CardHandle.m_hCard3);
if(nStatus==CG_OK)
{
m_CardOpenState.m_bCard3Opened=false;
m_CardHandle.m_hCard3=NULL;
return TRUE;
}
return FALSE;
break;
case 4:
if(!m_CardOpenState.m_bCard4Opened)
return TRUE;
if(m_CardCapState.m_bCard4Capturing)
return FALSE;
nStatus=EndCGCard(m_CardHandle.m_hCard4);
if(nStatus==CG_OK)
{
m_CardOpenState.m_bCard4Opened=false;
m_CardHandle.m_hCard4=NULL;
return TRUE;
}
return FALSE;
break;
default:
return FALSE;
}
}
/************************************************************************/
/* SetInputViewSize() */
/************************************************************************/
/* */
/*功能描述: 设置图像采集卡的输入图像采集视野 */
/* */
/*输入参数: int nCardNo;-卡号,取值范围1-4 */
/* int nWidth; -输入图像采集宽度; */
/* PAL时最大为768,NTSC时最大为640 */
/* int nHeight;-输入图像采集高度 */
/* PAL时最大为576,NTSC时最大为480 */
/* */
/*调用前提: -1) 图像采集卡已打开; */
/* -2) 如果图像正在采集,调用StopCapture()停止采集过程; */
/* */
/* 返回值: BOOL; =TRUE -设置成功; */
/* =FALSE -设置失败; */
/* */
/*变量输出: 无 */
/* */
/*其它说明; 无 */
/* */
/************************************************************************/
BOOL CImageManager::SetInputViewSize(int nCardNo,int nWidth,int nHeight)
{
CGSTATUS nStatus;
int W;
int H;
switch(nCardNo)
{
case 1:
if(!m_CardOpenState.m_bCard1Opened)
return FALSE;
if((m_CardProperty1.m_VideoStandard==PAL)&&(nWidth>768))
W=768;
else if((m_CardProperty1.m_VideoStandard==NTSC)&&(nWidth>640))
W=640;
else if(nWidth>0)
W=nWidth;
else
return FALSE;
if((m_CardProperty1.m_VideoStandard==PAL)&&(nHeight>576))
H=576;
else if((m_CardProperty1.m_VideoStandard==NTSC)&&(nHeight>480))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -