#pragma once #include "CManageDB.h" #include "CMultiTemplate.h" #include "CCameraBase.h" #include "ILocalizationManager.h" #include "IPicOperate.h" #ifdef C_PR_STRATEGY_EXPORTS #define C_PR_STRATEGY_DLL_API __declspec(dllexport) #else #define C_PR_STRATEGY_DLL_API //__declspec(dllimport) #endif using namespace ns_db; using namespace JVision; namespace ns_pr { /** * @brief CPRStrategy �࣬���ڴ���ģ��ƥ�������ز�����֧�ֵ�ģ��Ͷ�ģ��ƥ�䡣 */ class C_PR_STRATEGY_DLL_API CPRStrategy { private: bool m_bIsInitSuccess = false; // ��ʼ���Ƿ�ɹ��ı�־ CMultiTemplate* m_pMultiTemp = nullptr; // ��ģ���������ָ�� CSingleTemplate* m_pSingleTemp = nullptr; // ��ģ���������ָ�� CAxis* m_pAxisX = nullptr; // X �����ָ�� CAxis* m_pAxisY = nullptr; // Y �����ָ�� CAxis* m_pAxisZ = nullptr; // Z �����ָ�� CAxis* m_pAxisR = nullptr; // R �����ָ�� vector<CAMERA_CALIB_STRUCT> m_VecCamera; // ���У�ṹ������ public: CPRStrategy(); /** * @brief ���캯����ʹ�����У�ṹ��������������ָ���ʼ������ * * @param vecCamera ���У�ṹ��������������������У��Ϣ�� * @param pX X �����ָ�룬���ڿ��� X ����ƶ���λ�û�ȡ�� * @param pY Y �����ָ�룬���ڿ��� Y ����ƶ���λ�û�ȡ�� * @param pZ Z �����ָ�룬��ѡ������Ĭ��Ϊ nullptr�����ڿ��� Z ����ƶ���λ�û�ȡ�� * @param pR R �����ָ�룬��ѡ������Ĭ��Ϊ nullptr�����ڿ��� R �����ת�ͽǶȻ�ȡ�� */ CPRStrategy(vector<CAMERA_CALIB_STRUCT> vecCamera, CAxis* pX, CAxis* pY, CAxis* pZ = nullptr, CAxis* pR = nullptr); /** * @brief ���캯����ʹ�õ����������У��Ϣ�Լ�������ָ���ʼ������ * * @param pCamera �������ָ�룬����ͼ��ɼ��� * @param pXYCalib ��� XY У����ָ�룬���������У������ * @param pX X �����ָ�룬���ڿ��� X ����ƶ���λ�û�ȡ�� * @param pY Y �����ָ�룬���ڿ��� Y ����ƶ���λ�û�ȡ�� * @param pZ Z �����ָ�룬��ѡ������Ĭ��Ϊ nullptr�����ڿ��� Z ����ƶ���λ�û�ȡ�� * @param pR R �����ָ�룬��ѡ������Ĭ��Ϊ nullptr�����ڿ��� R �����ת�ͽǶȻ�ȡ�� */ CPRStrategy(CCameraBase* pCamera, CXYCalib* pXYCalib, CAxis* pX, CAxis* pY, CAxis* pZ = nullptr, CAxis* pR = nullptr); /** * @brief �����������ͷŶ�̬�������Դ�� */ ~CPRStrategy(); /** * @brief ���� PR ���� ID ����ģ��ƥ�䣬��������Ľ���� * * @param iId ʶͼ ID��ģ�� ID ����� ID��������ָ��Ҫƥ���ģ�����ԡ� * @param nDelayTakePicture ������ʱ����λ���ܸ��ݾ���ϵͳ���������ڿ������յ�ʱ���� * @param stOffset ���ֵ�������뵱ǰλ�õ�ƫ��ֵ����λΪ um���ף������ڱ�ʾƥ������λ�úͽǶ�ƫ� * @return LONG ����������ɹ����� OK��������Ӧ�Ĵ����롣 */ LONG SearchModels(UINT iId, UINT nDelayTakePicture, FIND_MULTI_TEMP_STRUCT& stOffset); /** * @brief ���ص� SearchModels ������ʹ�ò�ͬ������ṹ�塣 * * @param iId ʶͼ ID��ģ�� ID ����� ID��������ָ��Ҫƥ���ģ�����ԡ� * @param nDelayTakePicture ������ʱ����λ���ܸ��ݾ���ϵͳ���������ڿ������յ�ʱ���� * @param stOffset ���ֵ�������뵱ǰλ�õ�ƫ��ֵ���� X_Y_ANGLE_STRUCT �ṹ���ʾ����λΪ um���ף��ͽǶȡ� * @return LONG ����������ɹ����� OK��������Ӧ�Ĵ����롣 */ LONG SearchModels(UINT iId, UINT nDelayTakePicture, X_Y_ANGLE_STRUCT& stOffset); /** * @brief ����ģ�塣 * * @param iCameraId ��� ID������ָ��ʹ���ĸ��������ģ�崴���� * @param iPrMethod PR ���� ID������ָ������ģ����ʹ�õķ����� * @return LONG ����������ɹ����� OK��������Ӧ�Ĵ����롣 */ LONG CreateTemplate(UINT iCameraId, UINT iPrMethod, SEARCH_OUT eResultSelect, UINT& iTemplateId); /** * @brief ����ģ�塣 * * @param iPrMethod ����ķ���Id�� * @param iCameraId ��� ID������ָ��ʹ���ĸ��������ģ�崴���� * @return LONG ����������ɹ����� OK��������Ӧ�Ĵ����롣 */ LONG CreatePrMethod(UINT iCameraId,UINT& iPrMethod); /** * @brief ���� PR ���ԡ� * * @param vecTemplateId ģ�� ID �������������ģ��� ID������ָ��������������ģ�塣 * @return LONG ����������ɹ����� OK��������Ӧ�Ĵ����롣 */ LONG CreatePrStrategy(vector<UINT> vecTemplateId); static LONG EditTemplate(UINT iTemplateId); }; }