Compare commits

...

2 Commits

3 changed files with 33 additions and 33 deletions

View File

@ -13,6 +13,7 @@ set(TARGET irisXimeaImager)
set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5 REQUIRED ${QT}) find_package(Qt5 REQUIRED ${QT})
include_directories(/usr/include) include_directories(/usr/include)
include_directories(/opt/XIMEA/include/)
add_library( add_library(
irisXimeaImager SHARED irisXimeaImager SHARED

View File

@ -31,6 +31,9 @@ namespace Iris
void setEffectiveWindowRoi(int OffsetX, int width); void setEffectiveWindowRoi(int OffsetX, int width);
int getBufferSizeOfOneFrame(); int getBufferSizeOfOneFrame();
float getTemperature(); float getTemperature();
XI_IMG m_image; // image buffer
public: public:
//继承基类的 //继承基类的
IrisXimeaImager();//11111111111111111111 IrisXimeaImager();//11111111111111111111
@ -95,7 +98,6 @@ namespace Iris
bool is_trigger_external(); bool is_trigger_external();
protected: protected:
private: private:
XI_IMG m_image; // image buffer
uint64_t m_timestampOfCamera; uint64_t m_timestampOfCamera;
int m_iSpectralBin; int m_iSpectralBin;

View File

@ -8,10 +8,14 @@ void Iris::IrisXimeaImager::setGainOffset(float gain, float offset)
bool Iris::IrisXimeaImager::setSpectralBin(int spectralBin) 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; m_iSpectralBin = spectralBin;
@ -20,10 +24,14 @@ bool Iris::IrisXimeaImager::setSpectralBin(int spectralBin)
bool Iris::IrisXimeaImager::setSpatialBin(int spatialBin) 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; m_iSpatialBin = spatialBin;
@ -33,7 +41,9 @@ bool Iris::IrisXimeaImager::setSpatialBin(int spatialBin)
int Iris::IrisXimeaImager::getSpectralBin() int Iris::IrisXimeaImager::getSpectralBin()
{ {
int spectralBin = 0; 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; return spectralBin;
} }
@ -41,7 +51,9 @@ int Iris::IrisXimeaImager::getSpectralBin()
int Iris::IrisXimeaImager::getSpatialBin() int Iris::IrisXimeaImager::getSpatialBin()
{ {
int spatialBin = 0; 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; return spatialBin;
} }
@ -83,17 +95,7 @@ int Iris::IrisXimeaImager::getBufferSizeOfOneFrame()
// //
// return static_cast<int>(m_image.bp_size); // return static_cast<int>(m_image.bp_size);
return m_iEffectiveWindow_height * m_iEffectiveWindow_width * 2;
if(m_iSpectralBin == 1)
{
return m_iEffectiveWindow_height * 1364 * 2;
}
else if (m_iSpectralBin == 2)
{
return m_iEffectiveWindow_height * 682 * 2;
}
} }
float Iris::IrisXimeaImager::getTemperature() 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----2 数据格式设置失败!\n");
printf("Iris::IrisXimeaImager::connect----当前数据格式为:%d\n",dataFortmat); printf("Iris::IrisXimeaImager::connect----当前数据格式为:%d\n",dataFortmat);
} }
} }
void Iris::IrisXimeaImager::disconnect() void Iris::IrisXimeaImager::disconnect()
{ {
printf("Closing camera...\n"); printf("Closing camera...\n");
CE(xiCloseDevice(m_xiH)); CE(xiCloseDevice(m_xiH));
m_xiH=NULL;
} }
void Iris::IrisXimeaImager::start() void Iris::IrisXimeaImager::start()
@ -232,10 +236,10 @@ unsigned short *Iris::IrisXimeaImager::get_frame(unsigned short *buffer)
// //方法2:此做法是错误的,虽然是指针,也是传值! // //方法2:此做法是错误的,虽然是指针,也是传值!
// buffer = (unsigned short *)m_image.bp; // buffer = (unsigned short *)m_image.bp;
for(int i=0;i<m_iEffectiveWindow_height;i++) // 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); // 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 *),会有精度降低的问题??????????????????????????????????????????????????? //强制将指针从高精度uint64_t*转换到低精度unsigned short *),会有精度降低的问题???????????????????????????????????????????????????
return (unsigned short *)&m_timestampOfCamera; return (unsigned short *)&m_timestampOfCamera;
@ -339,14 +343,7 @@ int Iris::IrisXimeaImager::get_inc_end_band()
int Iris::IrisXimeaImager::get_sample_count() int Iris::IrisXimeaImager::get_sample_count()
{ {
if(m_iSpectralBin == 1) return m_iEffectiveWindow_width;
{
return 1364;
}
else if (m_iSpectralBin == 2)
{
return 682;
}
} }
int Iris::IrisXimeaImager::get_start_sample() int Iris::IrisXimeaImager::get_start_sample()