From c966531151293022422da34fd1060655d0bc2ae7 Mon Sep 17 00:00:00 2001 From: tangchao0503 <735056338@qq.com> Date: Sun, 30 Oct 2022 23:56:17 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=B0=86bin=E7=9A=84=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E6=8D=A2=E4=B8=BAdecimation=EF=BC=88=E8=8A=AF=E7=89=87bin?= =?UTF-8?q?=EF=BC=89=EF=BC=8C=E5=87=8F=E5=B0=8F=E6=95=B0=E6=8D=AE=E9=87=8F?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E6=8F=90=E9=AB=98=E5=B8=A7=E7=8E=87=EF=BC=9B?= =?UTF-8?q?=202.=20=E4=B8=80=E4=BA=9B=E5=B0=8F=E4=BF=AE=E6=94=B9=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 1 + Source_Files/irisximeaimager.cpp | 53 +++++++++++++++----------------- 2 files changed, 26 insertions(+), 28 deletions(-) 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()