123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- #ifndef __ILOCALIZATION_H__
- #define __ILOCALIZATION_H__
- // *****************************************************************************
- // 版权所有(C)2023~2099 上海骄成超声波技术有限公司
- // 保留所有权利
- // *****************************************************************************
- // 作者 : 李祥瑞
- // 版本 : 1.0
- // 代码创建日期:2024/11/19
- // 版本更新日期:2024/11/21
- // 功能说明: 定位算法接口
- // *****************************************************************************
- #include <map>
- #include <vector>
- #include "CommonUtils.h"
- namespace JVision
- {
- // 定位算法接口
- class JVision_API ILocalization
- {
- public:
- /**
- * @brief 构造函数
- */
- ILocalization() {}
- virtual ~ILocalization() {}
- /**
- * @brief 加载数据
- * @param[in] path 文件路径
- *
- * @return ResultCode 0: 成功, 其他: 失败
- *
- * @note 该接口必须在继承类中实现
- */
- virtual ResultCode Load(const std::string& path) = 0;
- /**
- * @brief 存储数据
- * @param[in] path 文件路径
- *
- * @return ResultCode 0: 成功, 其他: 失败
- *
- * @note 该接口必须在继承类中实现
- */
- virtual ResultCode Save(const std::string& path, const JVision::ImageInfo& initialImage) = 0;
- /**
- * @brief 获取算法名称
- *
- * @note 该接口必须在继承类中实现
- */
- virtual std::string GetName() const = 0;
- /**
- * @brief 获取算法类型
- *
- * @note 该接口必须在继承类中实现
- */
- virtual E_LOCALIZATION_TYPE GetLocalizionType() const = 0;
- /**
- * @brief 设置算法参数
- * @param[in] id 参数id
- * @param[in] value 参数值
- *
- * @return ResultCode 0: 成功, 其他: 失败
- *
- * @note 该接口必须在继承类中实现
- */
- virtual ResultCode SetParameter(ParamID id, void* value) = 0;
- /**
- * @brief 设置预处理List
- * @param count
- * @return int 0: 成功, 其他: 失败
- */
- virtual void SetPreProcessList(std::vector<ParamID>& arr) = 0;
- /**
- * @brief 获取预处理List
- * @param count
- * @return int 0: 成功, 其他: 失败
- */
- virtual std::vector<ParamID> GetPreProcessList() = 0;
- /**
- * @brief 设置预处理参数
- * @param id 参数id
- * @param value 参数值
- * @param index 下标, 第几个预处理
- * @return ResultCode 0: 成功, 其他: 失败
- */
- virtual ResultCode SetPreProcessParameter(ParamID id, void* value, int index) = 0;
- /**
- * @brief 获取算法参数
- * @param[in] id 参数ID
- *
- * @return ResultCode 0: 成功, 其他: 失败
- *
- * @note 该接口必须在继承类中实现
- */
- virtual void* GetParameter(ParamID id) const = 0;
- /**
- * @brief 获取所有的算法参数
- *
- * @return map<ParamID, ParamVal>
- *
- * @note 该接口必须在继承类中实现
- */
- virtual std::map<ParamID, void*> GetParameters() const = 0;
- /**
- * @brief 预处理图像
- * @param[in] srcImg 源图像信息
- * @param[in] keepFormat 预处理后的图像是否需要与源图像格式一致
- * @param[out] dstImg 预处理后的图像信息
- *
- * @return ResultCode 0: 成功, 其他: 失败
- *
- * @note 该接口必须在继承类中实现
- */
- virtual ResultCode Preprocess(const ImageInfo& srcImg, ImageInfo& dstImg, bool keepFormat = true) = 0;
- /**
- * @brief 运行算法
- * @param[in] srcImg 源图像信息
- * @param[out] dstImg 处理后图像
- * @param[out] markImg 模版图像
- * @param[out] type 算法类型
- * @param[in] result 结果流数据
- * @param[out] resultSize 结果流数据内存大小
- *
- * @return ResultCode 0: 成功, 其他: 失败
- *
- * @note 该接口必须在继承类中实现
- */
- virtual ResultCode Run(const ImageInfo& srcImg, ImageInfo& dstImg, ImageInfo& markImg, E_LOCALIZATION_TYPE* type, unsigned char* result, size_t resultSize) = 0;
- /**
- * @brief 运行算法
- * @param[in] srcImg 源图像信息
- * @param[out] dstImg 处理后图像
- * @param[out] markImg 模版图像
- * @param[out] type 算法类型
- * @param[in] result 结果流数据
- *
- * @return ResultCode 0: 成功, 其他: 失败
- *
- * @note 该接口必须在继承类中实现
- */
- virtual ResultCode RunLocalization(const ImageInfo& srcImg, ImageInfo& dstImg, ImageInfo& markImg, E_LOCALIZATION_TYPE* type, unsigned char** result) = 0;
- /**
- * @brief 对外算法接口
- * @param[in] srcImg 传入的JVision图像结构体
- * @param[out] dstImg 处理后的JVision图像结构体
- * @param[out] type 当前的算法类型
- * @param[out] **result 当前算法类型的结果流指针
- *
- * @return ResultCode 算法执行成功返回0,失败返回其余的整数值
- *
- * @note 该接口必须在继承类中实现
- * @note 对应的错误码类型可以通过ExecuteErrorCode中接口获取失败信息
- */
- virtual ResultCode Run2(const ImageInfo& srcImg, ImageInfo& dstImg, E_LOCALIZATION_TYPE* type, unsigned char** result) = 0;
- /**
- * @brief 销毁结果流数据, 与Run2配合使用
- * @param result 结果流数据
- *
- * @note 该接口必须在继承类中实现
- */
- virtual void DestroyResult(unsigned char* result) = 0;
- /**
- * @brief 绘制结果
- * @param[in] srcImg 源图像信息
- * @param[in] *result 结果流数据
- * @param[in] DrawContours 是否绘制轮廓
- * @param[in] Result 定位结果的rgb信息
- * @param[in] Contour 轮廓结果的rgb信息
- * @param[out] dstImg 结果图像信息
- *
- * @return ResultCode 0: 成功, 其他: 失败
- *
- * @note 该接口必须在继承类中实现
- */
- virtual ResultCode Paint(const ImageInfo& srcImg, unsigned char* result, bool DrawContours, std::vector<int>Result, std::vector<int>Contour, ImageInfo& dstImg) = 0;
- /**
- * @brief 获取算法存储的相机id
- */
- virtual int GetCameraID() = 0;
- };
- }
- #endif
|