//读取相机中的图像
int HikvisionSDK::ReadBuffer(int camId, HObject &ho_Image) //ho_Image
{
HObject getho_Image;
unsigned int nRecvBufSize = 0;
MVCC_INTVALUE stParam;
memset(&stParam, 0, sizeof(MVCC_INTVALUE));
int tempValue = MV_CC_GetIntValue(m_hDevHandle[camId], "PayloadSize", &stParam); //获取一帧数据的大小
if (tempValue != 0)
{
return -1;
}
nRecvBufSize = stParam.nCurValue;
unsigned char* pDate;
pDate=(unsigned char *)malloc(nRecvBufSize);
MV_FRAME_OUT_INFO_EX stImageInfo = {0};
//MV_FRAME_OUT stImageInfo = {0};
tempValue= MV_CC_GetOneFrameTimeout(m_hDevHandle[camId], pDate, nRecvBufSize, &stImageInfo, 700); //stFrameInfo
//tempValue= MV_CC_GetOneFrameTimeout(m_hDevHandle[camId], pDate, nRecvBufSize, &stImageInfo.stFrameInfo, 700);
if(tempValue!=0)
{
free(pDate);
return -1;
}
bool isMono;
switch (stImageInfo.enPixelType)
//switch (stImageInfo.stFrameInfo.enPixelType)
{
case PixelType_Gvsp_Mono8:
case PixelType_Gvsp_Mono10:
case PixelType_Gvsp_Mono10_Packed:
case PixelType_Gvsp_Mono12:
case PixelType_Gvsp_Mono12_Packed:
isMono=true;
break;
default:
isMono=false;
break;
}
if(isMono) //黑白图像
{
// MV_CC_SetPixelFormat(m_hDevHandle[camId],0);
GenImage1(&getho_Image,"byte", stImageInfo.nWidth, stImageInfo.nHeight,(Hlong)pDate);
// GenImage1(&getho_Image,"byte", stImageInfo.stFrameInfo.nWidth, stImageInfo.stFrameInfo.nHeight,(Hlong)pDate);
}
else //彩色图像
{
// MV_CC_SetPixelFormat(m_hDevHandle[camId],4);
GenImageInterleaved(&getho_Image,(Hlong)pDate,"bgr",(int)stImageInfo.nWidth,(int)stImageInfo.nHeight,0,"byte",(int)stImageInfo.nWidth,(int)stImageInfo.nHeight, 0, 0, -1, 0 );
// GenImageInterleaved(&getho_Image,(Hlong)pDate,"bgr",(int)stImageInfo.stFrameInfo.nWidth,(int)stImageInfo.stFrameInfo.nHeight,0,"byte",(int)stImageInfo.stFrameInfo.nWidth,(int)stImageInfo.stFrameInfo.nHeight, 0, 0, -1, 0 );
}
HalconCpp::CopyImage(getho_Image,&ho_Image);
free(pDate);
// MV_CC_FreeImageBuffer(m_hDevHandle[camId],&stImageInfo );
return 0;
}
HikvisionSDK::ReadBuffer的两种取图方式
最新推荐文章于 2024-01-05 11:13:04 发布