#ifndef SV_IMGPROCESS_H #define SV_IMGPROCESS_H ///////////////////////////////////////////////////////////////////////// /// @file nvCFPDImageProcess.h /// @brief 此文件提供探测器SDK 图像处理的接口函数,接口函数需要配合SDK的标准函数进行使用,不可独立使用 /// @version V1.0.0.0 /// @author Liliudan /// @date 2021-03-01 /// @par Copyright (c): Sensview Technology 成都善思微科技有限公司 /// ///////////////////////////////////////////////////////////////////////// #ifdef SV_IMGPROCESS_EXPORTS #define SV_IMGPROCESS_API __declspec(dllexport) #else #define SV_IMGPROCESS_API __declspec(dllimport) #endif #include "svImageProcessType.h" #ifdef __cplusplus extern "C" { #endif ///////////////////////////////////////////////////////////////////////// /// @brief 创建一个图像处理队列 /// @param [in out] hQueue 创建成功后返回的队列句柄 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS /// @note 该函数让用户创建一个图像处理队列,当处理队列不再使用时必须调用 @c NV_IMGP_DestroyProcessQueue() /// @sa @c NV_IMGP_DestroyProcessQueue() ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_CreateProcessQueue(HIMGPQUEUE * hQueue); ///////////////////////////////////////////////////////////////////////// /// @brief 销毁一个图像处理队列 /// @param [in] hQueue 队列句柄 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS /// @sa @c NV_IMGP_CreateProcessQueue() ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_DestroyProcessQueue(HIMGPQUEUE hQueue); ///////////////////////////////////////////////////////////////////////// /// @brief 向处理队列末尾添加一个处理算法 /// @param [in] hQueue 队列句柄 /// @param [in] eAlgoType 算法类型 /// @param [in out] hAlgo 添加成功后返回的算法操作句柄,如果添加失败则返回空 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_AppendProcessAlgorithm(HIMGPQUEUE hQueue, PROCESS_ALGO_TYPE eAlgoType, HIMGPALGO * hAlgo); ///////////////////////////////////////////////////////////////////////// /// @brief 从队列中删除指定算法 /// @param [in] hQueue 队列句柄 /// @param [in] eAlgoType 算法句柄 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_DeleteProcessAlgorithm(HIMGPQUEUE hQueue, HIMGPALGO hAlgo); ///////////////////////////////////////////////////////////////////////// /// @brief 从处理队列中获取指定算法类型 /// @param [in] hQueue 算法句柄 /// @param [in] eAlgoType 算法类型 /// @param [in out] hAlgo 添加成功后返回的算法操作句柄,如果添加失败则返回空 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_GetAlgorithmType(HIMGPALGO hAlgo, PROCESS_ALGO_TYPE * eType); ///////////////////////////////////////////////////////////////////////// /// @brief 设置算法参数 /// @param [in] hAlgo 算法操作句柄 /// @param [in] iItemType 算法配置项,详见类型文件nvImageProcessType.h中定义的不同算法的配置项 /// @param [in] pParam 待设置参数缓冲区指针 /// @param [in] iParamLen 待设置参数缓冲区大小 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_SetAlgorithmParam(HIMGPALGO hAlgo, int iItemType, const unsigned char * pParam, int iParamLen); ///////////////////////////////////////////////////////////////////////// /// @brief 获取算法参数 /// @param [in] hAlgo 算法操作句柄 /// @param [in] iItemType 算法配置项,详见类型文件nvImageProcessType.h中定义的不同算法的配置项 /// @param [in out] pParam 待获取参数缓冲区指针 /// @param [in out] iParamLen 待获取参数缓冲区大小 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_GetAlgorithmParam(HIMGPALGO hAlgo, int iItemType, unsigned char * pParam, int iParamLen); ///////////////////////////////////////////////////////////////////////// /// @brief 从队列中获取队列中的算法总数 /// @param [in] hQueue 队列句柄 /// @param [in out] iCount 获取到的算法总数 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_GetAlgorithmCount(HIMGPQUEUE hQueue, int * iCount); ///////////////////////////////////////////////////////////////////////// /// @brief 从队列中获取指定序号的算法操作句柄 /// @param [in] hQueue 队列句柄 /// @param [in] iIndex 索引序号 /// @param [in out] hAlgo 返回的算法操作句柄,如果获取失败则返回空 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_GetAlgorithmHandle(HIMGPQUEUE hQueue, int iIndex, HIMGPALGO * hAlgo); ///////////////////////////////////////////////////////////////////////// /// @brief 从队列中删除一个指定索引的算法 /// @param [in] hQueue 队列句柄 /// @param [in] iIndex 索引序号 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_DeleteAlgorithmByIndex(HIMGPQUEUE hQueue, int iIndex); ///////////////////////////////////////////////////////////////////////// /// @brief 启动处理队列 /// @param [in] hQueue 队列句柄 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_StartProcessQueue(HIMGPQUEUE hQueue); ///////////////////////////////////////////////////////////////////////// /// @brief 停止处理队列 /// @param [in] hQueue 队列句柄 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_StopProcessQueue(HIMGPQUEUE hQueue); ///////////////////////////////////////////////////////////////////////// /// @brief 处理队列是否已启动 /// @param [in] hQueue 队列句柄 /// @param [in out] bStarted 获取到的启动标志 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_IsProcessQueueStarted(HIMGPQUEUE hQueue, bool * bStarted); ///////////////////////////////////////////////////////////////////////// /// @brief 保存图像处理队列方案 /// @param [in] hQueue 队列句柄 /// @param [in out] pSchemeData 方案数据指针 /// @param [in out] iSchemeDataLen 方案数据长度 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_SaveProcessQueue(HIMGPQUEUE hQueue, char ** pSchemeData, int * iSchemeDataLen); ///////////////////////////////////////////////////////////////////////// /// @brief 加载图像处理队列方案 /// @param [in] hQueue 队列句柄 /// @param [in] pSchemeData 方案数据指针 /// @param [in] iSchemeDataLen 方案数据长度 /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS /// 加载后原有的队列信息将被覆盖 ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_LoadProcessQueue(HIMGPQUEUE hQueue, char * pSchemeData, int iSchemeDataLen); ///////////////////////////////////////////////////////////////////////// /// @brief 使用队列处理图像数据 /// @param [in] hQueue 队列句柄 /// @param [in] pSrcImg 原始图像数据 /// @param [in out] pProcessedImg 处理后图像数据 /// @param [in out] pHistogram 处理后图像直方图数据(如果处理队列为空则输出原始图像直方图) /// @retval NV_StatusCodes 返回状态码,若成功则返回NV_SC_SUCCESS ///////////////////////////////////////////////////////////////////////// SV_IMGPROCESS_API NV_StatusType SV_IMGP_ProcessImages(HIMGPQUEUE hQueue, const _NV_ImageInfo * pSrcImg, _NV_ImageInfo ** pProcessedImg, _SV_HISTOGRAM ** pHistogram); #ifdef __cplusplus } #endif #endif //NV_IMGPROCESS_H