@ -8,10 +8,14 @@ void Iris::IrisXimeaImager::setGainOffset(float gain, float offset)
bool Iris : : IrisXimeaImager : : setSpectralBin ( int spectralBin )
{
CE( xiSetParamInt( m_xiH , XI_PRM_BINNING_SELECTOR, XI_BIN_SELECT_HOST_CPU) ) ; //用: XI_BIN_SELECT_HOST_CPU; 默认为XI_BIN_SELECT_SENSOR(会报错), 不可用: XI_BIN_SELECT_DEVICE_FPGA
// CE( xiSetParamInt(m_xiH, XI_PRM_BINNING_SELECTOR, XI_BIN_SELECT_HOST_CPU)); //用: XI_BIN_SELECT_HOST_CPU; 默认为XI_BIN_SELECT_SENSOR(会报错), 不可用: XI_BIN_SELECT_DEVICE_FPGA
// CE(xiSetParamInt(m_xiH, XI_PRM_BINNING_VERTICAL_MODE, XI_BIN_MODE_SUM));
// CE(xiSetParamInt(m_xiH, XI_PRM_BINNING_VERTICAL, spectralBin));//***********************************
CE ( xiSetParamInt ( m_xiH , XI_PRM_DECIMATION_SELECTOR , XI_DEC_SELECT_SENSOR ) ) ;
CE ( xiSetParamInt ( m_xiH , XI_PRM_DECIMATION_VERTICAL , spectralBin ) ) ;
CE ( xiSetParamInt ( m_xiH , XI_PRM_BINNING_VERTICAL_MODE , XI_BIN_MODE_SUM ) ) ;
CE ( xiSetParamInt ( m_xiH , XI_PRM_BINNING_VERTICAL , spectralBin ) ) ; //***********************************
m_iSpectralBin = spectralBin ;
@ -20,10 +24,14 @@ bool Iris::IrisXimeaImager::setSpectralBin(int spectralBin)
bool Iris : : IrisXimeaImager : : setSpatialBin ( int spatialBin )
{
CE( xiSetParamInt( m_xiH , XI_PRM_BINNING_SELECTOR, XI_BIN_SELECT_HOST_CPU) ) ; //用: XI_BIN_SELECT_HOST_CPU; 默认为XI_BIN_SELECT_SENSOR(会报错), 不可用: XI_BIN_SELECT_DEVICE_FPGA
// CE( xiSetParamInt(m_xiH, XI_PRM_BINNING_SELECTOR, XI_BIN_SELECT_HOST_CPU)); //用: XI_BIN_SELECT_HOST_CPU; 默认为XI_BIN_SELECT_SENSOR(会报错), 不可用: XI_BIN_SELECT_DEVICE_FPGA
//
// CE(xiSetParamInt(m_xiH, XI_PRM_BINNING_HORIZONTAL_MODE, XI_BIN_MODE_SUM));
// CE(xiSetParamInt(m_xiH, XI_PRM_BINNING_HORIZONTAL, spatialBin));
CE ( xiSetParamInt ( m_xiH , XI_PRM_BINNING_HORIZONTAL_MODE , XI_BIN_MODE_SUM ) ) ;
CE ( xiSetParamInt ( m_xiH , XI_PRM_BINNING_HORIZONTAL , spatialBin ) ) ;
CE ( xiSetParamInt ( m_xiH , XI_PRM_DECIMATION_SELECTOR , XI_DEC_SELECT_SENSOR ) ) ;
CE ( xiSetParamInt ( m_xiH , XI_PRM_DECIMATION_HORIZONTAL , spatialBin ) ) ;
m_iSpatialBin = spatialBin ;
@ -33,7 +41,9 @@ bool Iris::IrisXimeaImager::setSpatialBin(int spatialBin)
int Iris : : IrisXimeaImager : : getSpectralBin ( )
{
int spectralBin = 0 ;
CE( xiGetParamInt( m_xiH , XI_PRM_BINNING_VERTICAL, & spectralBin) ) ;
// CE( xiGetParamInt(m_xiH, XI_PRM_BINNING_VERTICAL, & spectralBin));
CE ( xiGetParamInt ( m_xiH , XI_PRM_DECIMATION_VERTICAL , & spectralBin ) ) ;
return spectralBin ;
}
@ -41,7 +51,9 @@ int Iris::IrisXimeaImager::getSpectralBin()
int Iris : : IrisXimeaImager : : getSpatialBin ( )
{
int spatialBin = 0 ;
CE( xiGetParamInt( m_xiH , XI_PRM_BINNING_HORIZONTAL, & spatialBin) ) ;
// CE( xiGetParamInt(m_xiH, XI_PRM_BINNING_HORIZONTAL, & spatialBin));
CE ( xiGetParamInt ( m_xiH , XI_PRM_DECIMATION_HORIZONTAL , & spatialBin ) ) ;
return spatialBin ;
}
@ -83,17 +95,7 @@ int Iris::IrisXimeaImager::getBufferSizeOfOneFrame()
//
// return static_cast<int>(m_image.bp_size);
if ( m_iSpectralBin = = 1 )
{
return m_iEffectiveWindow_height * 1364 * 2 ;
}
else if ( m_iSpectralBin = = 2 )
{
return m_iEffectiveWindow_height * 682 * 2 ;
}
return m_iEffectiveWindow_height * m_iEffectiveWindow_width * 2 ;
}
float Iris : : IrisXimeaImager : : getTemperature ( )
@ -149,13 +151,15 @@ void Iris::IrisXimeaImager::connect(const char *camera_serial_number)
printf ( " Iris::IrisXimeaImager::connect----2 数据格式设置失败! \n " ) ;
printf ( " Iris::IrisXimeaImager::connect----当前数据格式为:%d \n " , dataFortmat ) ;
}
}
void Iris : : IrisXimeaImager : : disconnect ( )
{
printf ( " Closing camera... \n " ) ;
CE ( xiCloseDevice ( m_xiH ) ) ;
m_xiH = NULL ;
}
void Iris : : IrisXimeaImager : : start ( )
@ -232,10 +236,10 @@ unsigned short *Iris::IrisXimeaImager::get_frame(unsigned short *buffer)
// //方法2:此做法是错误的,虽然是指针,也是传值!
// buffer = (unsigned short *)m_image.bp;
for( int i = 0 ; i < m_iEffectiveWindow_height; i + + )
{
memcpy( buffer+ i * m_iEffectiveWindowRoi_width, ( unsigned short * ) m_image . bp + i * m_iEffectiveWindow_width + m_iEffectiveWindowRoi_OffsetX, m_iEffectiveWindowRoi_width* 2 ) ;
}
// for(int i=0;i< m_iEffectiveWindow_height;i++)
// {
// memcpy( buffer+i* m_iEffectiveWindowRoi_width, ( unsigned short *)m_image.bp + i* m_iEffectiveWindow_width + m_iEffectiveWindowRoi_OffsetX, m_iEffectiveWindowRoi_width*2);
// }
//强制将指针从高精度( uint64_t*) 转换到低精度( unsigned short *),会有精度降低的问题???????????????????????????????????????????????????
return ( unsigned short * ) & m_timestampOfCamera ;
@ -339,14 +343,7 @@ int Iris::IrisXimeaImager::get_inc_end_band()
int Iris : : IrisXimeaImager : : get_sample_count ( )
{
if ( m_iSpectralBin = = 1 )
{
return 1364 ;
}
else if ( m_iSpectralBin = = 2 )
{
return 682 ;
}
return m_iEffectiveWindow_width ;
}
int Iris : : IrisXimeaImager : : get_start_sample ( )