Sat_Irc.cpp 1.8 KB

#include "JZsdkLib.h"

#include "BaseConfig.h"

#ifdef SATIRC_LIB_STATUS_ON
#include "satir_module.h"
#include "Sat_Irc.h"

TSatIR_Module irModule;  // 实例化对象

T_JZsdkReturnCode SatIrc_init()
{
    int ret = irModule.openIRCamera();
    if (ret != 0)
    {
        JZSDK_LOG_ERROR("打开红外相机失败");
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
    }

    //获取红外图像的分辨率
    int width = irModule.getIRWidth();
    int height = irModule.getIRHeight();

    JZSDK_LOG_INFO("获取到红外图像的分辨率为:宽:%d,高:%d", width, height);

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}


T_JZsdkReturnCode SatIrc_SetColorPalette(int color)
{
    irModule.setColorPalette((TSatIR_Module::ColorPalette)color);

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

/********************
 * 
 *  打档 
 *  1内参考
 *  2外参考
 * 
 * *****************/
T_JZsdkReturnCode SatIrc_DoShutter(int type)
{
    irModule.doShutter(type);

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

/*************
 * 
 *  
 *  获取rgb图像
 * 
 * 
 * ************/
T_JZsdkReturnCode SatIrc_GetIRImage(U8_t *image, int PixelNum)
{
    std::vector<uint8_t> outGray8;
    std::vector<uint32_t> outRGBImage;
        
    // 调用获取红外帧的函数
    irModule.getIRFrame(outGray8, outRGBImage);

    // 检查获取的数据是否有效
    if (outRGBImage.empty() || outRGBImage.size() < PixelNum) 
    {
        JZSDK_LOG_ERROR("获取红外图像失败");
        return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
    }
    
    // 直接将32位RGB数据拷贝到输出缓冲区
    // 每个像素占4字节(R|G|B|A或R|G|B|X,具体格式取决于SDK)
    memcpy(image, outRGBImage.data(), PixelNum * sizeof(uint32_t));

    return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}

#endif // SATIRC_LIB_STATUS_ON