#pragma once #include "CManageDB.h" #include "CSingleTemplate.h" #ifdef C_PR_STRATEGY_ALN_EXPORTS #define C_PR_STRATEGY_ALN_DLL_API __declspec(dllexport) #else #define C_PR_STRATEGY_ALN_DLL_API //__declspec(dllimport) #endif using namespace ns_db; using namespace JVision; namespace ns_pr { //�˴������ƫ��Ϊ�����RefPos���������꣨�ף� struct FIND_MULTI_TEMP_STRUCT { //PR_OUTPUT_TYPE type; //�������� //XY_DOUBLE_STRUCT AbsPos; //����λ�� XY_DOUBLE_STRUCT RefPos; //�ο�λ�ã�����ƫ����Դ�Ϊ�� double score; //���� double x; //x����ƫ��ף� double y; //y����ƫ��ף� union { double angle; //�Ƕ�ƫ��ȣ� double radius; //�뾶 }; }; class C_PR_STRATEGY_ALN_DLL_API CMultiTemplate { private: CAxis* m_pAxisX = nullptr; // X��ָ�� CAxis* m_pAxisY = nullptr; // Y��ָ�� CAxis* m_pAxisZ = nullptr; // Z��ָ�� CAxis* m_pAxisR = nullptr; // R��ָ�� bool m_bIsInitSuccess = false; // ��ʼ���Ƿ�ɹ��ı�־ CProduct* m_pCProduct = nullptr; // ��Ʒָ�� CSingleTemplate* m_pCPrTemplate = nullptr; // ��ģ��ָ�� vector<CAMERA_CALIB_STRUCT> m_VecCamera; // ���У�ṹ������ // �������Ƿ���ȷ // ������nCameraId - ���ID // ����ֵ��������ID��������������У�����true������false bool CheckCameraId(UINT nCameraId); // �����������ƶ���ָ��λ�ã�������ͬ������ // ������dX - X��Ŀ��λ�ã�dY - Y��Ŀ��λ�ã�dZ - Z��Ŀ��λ�ã�dR - R��Ŀ��λ�� // ����ֵ�������ɹ�����OK�����ش����� LONG ModuleMove(double dX, double dY, double dZ, double dR); // ͨ�����Id��ȡ���ָ�� // ������nCameraID - ���ID // ����ֵ������ҵ���Ӧ������������ָ�룻����nullptr CCameraBase* GetCameraPoint(UINT nCameraID); // ͨ�����Id��ȡ���XY�궨ָ�� // ������nCameraID - ���ID // ����ֵ������ҵ���Ӧ�����XY�궨������XY�궨ָ�룻����nullptr CXYCalib* GetXYCalibPoint(UINT nCameraID); // ͨ������Id����ȡ������ͼģ�� // ������iStrategyId - ����ID��stTemplate - ���ڴ洢��ȡ����ģ������� // ����ֵ�������ɹ�����OK�����ش����� LONG GetAlnTemplateById(UINT iStrategyId, vector<PR_TEMPLATE>& stTemplate); // ͨ������Id����ȡ�ο�λ�� // ������iStrategyId - ����ID��stRef - ���ڴ洢�ο�λ�õĽṹ�� // ����ֵ�������ɹ�����OK�����ش����� LONG GetAlnRefById(UINT iStrategyId, X_Y_ANGLE_STRUCT& stRef); public: // ���������������ͷ���Դ ~CMultiTemplate(); // ���캯������ʼ��CMultiTemplate���� // ������vecCamer - ���У�ṹ��������pX - X��ָ�룻pY - Y��ָ�룻pZ - Z��ָ�루��ѡ��Ĭ��Ϊnullptr����pR - R��ָ�루��ѡ��Ĭ��Ϊnullptr�� CMultiTemplate(vector<CAMERA_CALIB_STRUCT> vecCamer, CAxis* pX, CAxis* pY, CAxis* pZ = nullptr, CAxis* pR = nullptr); // �ж϶����Ƿ��ʼ���ɹ� // ����ֵ�������ʼ���ɹ�������true������false bool IsInitSuccess() { return m_bIsInitSuccess; }; // ������ģ�壬����һ��Pr���Եõ��ľ��ԣ�X��Y���ף��Լ��Ƕȣ��ȣ� // ������stVecTemplate - ģ�������� // ������nDelayTakePicture - ������ʱ�� // ������stOutAln - �������������ṹ�� // ����ֵ�������ɹ�����OK�����ش����� LONG SearchMultipleTemplate(vector<PR_TEMPLATE> stVecTemplate, UINT nDelayTakePicture, X_Y_ANGLE_STRUCT& stOutAln); /// <summary> /// ����PR����Id������ģ��ƥ�䣬��������Ľ�� /// </summary> /// <param name="iStrategyId">����id</param> /// <param name="nDelayTakePicture">������ʱ</param> /// <param name="stOutAln">���ֵ �Ե���</param> /// <returns>�ɹ�����OK�����ش�����</returns> LONG SearchAlnModels(UINT iStrategyId, UINT nDelayTakePicture, FIND_MULTI_TEMP_STRUCT& stOutAln); // ��������ģ�� // ������vecTemplateId - ģ��ID���� // ����ֵ�������ɹ�����OK�����ش����� LONG CreateAlnModels(vector<UINT> vecTemplateId); }; }