diff --git a/CMakeLists.txt b/CMakeLists.txt index 721e61a..e68f274 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ set(TARGET irisXimeaImager) set(CMAKE_INCLUDE_CURRENT_DIR ON) find_package(Qt5 REQUIRED ${QT}) include_directories(/usr/include) +include_directories(/opt/XIMEA/include/) add_library( irisXimeaImager SHARED diff --git a/Source_Files/irisximeaimager.cpp b/Source_Files/irisximeaimager.cpp index 5e338e0..f1f1242 100644 --- a/Source_Files/irisximeaimager.cpp +++ b/Source_Files/irisximeaimager.cpp @@ -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(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_iEffectiveWindowRoi_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() @@ -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_iEffectiveWindowRoi_width; } int Iris::IrisXimeaImager::get_start_sample()