123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #pragma once
- #include "CManageDB.h"
- #include "CAxis.h"
- #include "CCameraBase.h"
- //#include "CXYCalib.h"
- //#include "ILocalizationManager.h"
- #include "CPxielLocation.h"
- #ifdef C_PR_TEMPLATE_EXPORTS
- #define C_PR_TEMPLATE_DLL_API __declspec(dllexport)
- #else
- #define C_PR_TEMPLATE_DLL_API //__declspec(dllimport)
- #endif
- using namespace ns_db;
- using namespace JVision;
- class CXYCalib;
- namespace ns_pr
- {
- //此处输出的偏差为相对于相机十字光标中心的物理坐标(微米)
- struct FIND_SINGLE_TEMP_STRUCT
- {
- PR_OUTPUT_TYPE type; //方法类型
- double score; //分数
- double x; //x方向偏差(微米)
- double y; //y方向偏差(微米)
- union
- {
- double angle; //角度偏差(度)
- double radius; //半径
- };
- };
- // 相机校准结构体,用于存储相机指针和对应的坐标校准指针
- struct CAMERA_CALIB_STRUCT
- {
- CCameraBase* pCamera; // 指向相机对象的指针
- CXYCalib* pXYCalib; // 指向坐标校准对象的指针
- };
- // CSingleTemplate 类,用于处理单模板相关的操作
- class C_PR_TEMPLATE_DLL_API CSingleTemplate
- {
- private:
- bool m_bIsInitSuccess; // 标记初始化是否成功
- CProduct* m_pCProduct = nullptr; // 指向产品相关对象的指针,可能用于与数据库交互获取产品信息
- //ILocalizationManager* m_pLocalizationManager = nullptr; // 本地化管理对象指针,暂时注释掉,可能在后续功能扩展中使用
- CPixelLocation* m_pPixelLocation = nullptr; // 像素位置处理对象指针,用于处理图像中像素位置相关操作
- vector<CAMERA_CALIB_STRUCT> m_VecCamera; // 存储相机校准结构体的向量
- // 禁止默认构造函数,确保对象只能通过特定方式初始化
- //CSingleTemplate() = delete;
- // 检查相机ID是否在存储的相机列表中
- // 参数 nCameraId:要检查的相机ID
- bool CheckCameraId(UINT nCameraId);
- // 通过相机ID获取相机对象指针
- // 参数 nCameraID:目标相机的ID
- // 返回值:指向相机对象的指针,如果未找到则返回 nullptr
- CCameraBase* GetCameraPoint(UINT nCameraID);
- // 通过相机ID获取相机的XY标定对象指针
- // 参数 nCameraID:目标相机的ID
- // 返回值:指向相机XY标定对象的指针,如果未找到则返回 nullptr
- CXYCalib* GetXYCalibPoint(UINT nCameraID);
- // 通过模板ID获取模板信息
- // 参数 iTemplateId:要获取的模板ID
- // 参数 stTemplate:用于存储获取到的模板信息的结构体引用
- // 返回值:操作结果,例如成功返回 OK,失败返回 FAIL 等
- LONG GetTemplateById(UINT iTemplateId, PR_TEMPLATE& stTemplate);
- // 搜索图片,outPoint为相对于图片左上角的点,暂时注释掉,可能在后续功能整合中使用
- // 参数 iPrMethod:搜索使用的方法ID
- // 参数 image:要搜索的图像信息
- // 参数 outPoint:用于存储搜索结果的相对于图片左上角的点的结构体引用
- // 返回值:操作结果,例如成功返回 OK,失败返回 FAIL 等
- //LONG SearchImageByLocalization(UINT iPrMethod, ImageInfo image,FIND_OUTPUT_STRUCT& outPoint);
- public:
- // 构造函数,使用传入的相机校准结构体向量进行初始化
- // 参数 vecCamer:包含相机和坐标校准信息的结构体向量
- CSingleTemplate(vector<CAMERA_CALIB_STRUCT> vecCamer);
- // 获取初始化是否成功的状态
- // 返回值:初始化成功返回 true,失败返回 false
- bool IsInitSuccess() { return m_bIsInitSuccess; };
- // 根据给定的模板信息、拍照延迟时间,搜索单模板,返回相对于十字光标中心的X、Y(微米值)以及角度(度)偏差
- // 参数 stTemplate:包含模板相关信息的结构体,如相机ID、方法等
- // 参数 nDelayTakePicture:拍照前的延迟时间(单位为毫秒)
- // 参数 stOutOffset:用于存储搜索结果偏差信息的结构体引用,包括X、Y和角度偏差
- // 返回值:操作结果,例如成功返回 OK,失败返回 FAIL 等
- LONG SearchTemplate(PR_TEMPLATE stTemplate, UINT nDelayTakePicture, FIND_SINGLE_TEMP_STRUCT& stOutOffset);
- // 根据给定的模板ID、拍照延迟时间,搜索单模板,返回相对于十字光标中心的X、Y(微米值)以及角度(度)偏差
- // 参数 iTemplateId:要搜索的模板ID
- // 参数 nDelayTakePicture:拍照前的延迟时间(单位毫秒)
- // 参数 stOutOffset:用于存储搜索结果偏差信息的结构体引用,包括X、Y和角度偏差
- // 返回值:操作结果,例如成功返回 OK,失败返回 FAIL 等
- LONG SearchTemplate(UINT iTemplateId, UINT nDelayTakePicture, FIND_SINGLE_TEMP_STRUCT& stOutOffset);
- // 创建模板,传入模块类型、相机ID、识别方法、抓取位置等参数,可选结果选择参数
- // 参数 iModuleType:模板所属的模块类型
- // 参数 iCameraId:使用的相机ID
- // 参数 iPrMethod:模板识别方法ID
- // 参数 stGrabPos:包含抓取位置信息的结构体,可能包括X、Y、Z坐标和旋转角度等
- // 参数 eResultSelect:结果选择枚举值,默认值为 SEARCH_OUT::OUT_All,用于指定搜索结果的类型
- // 返回值:操作结果,例如成功返回 OK,失败返回 FAIL 等
- LONG CreateTemplate(UINT iCameraId, UINT iPrMethod, X_Y_Z_R_STRUCT stGrabPos, SEARCH_OUT eResultSelect,UINT &iTemplateId);
- };
- }
|