#pragma once #include "CCalib.h" #include "dt.h" #include "TypeDef.h" /* XY�궨��������궨�� �����궨�����ͱ궨��� */ //using namespace JVision; using namespace std; struct CALIB_XY_PARAM { double dCenterPosX = 0; //�ŵ��м���X���� double dCenterPosY = 0; //�ŵ��м���Y���� double dGrabPosZ = 0; //�궨ʱZ��λ�� double dCalibStepX = 0; //����궨����X double dCalibStepY = 0; //����궨����Y int nTempId = 0; //����id string sResultMatrix = ""; //�궨������� }; class __declspec(dllexport) CXYCalib : public CCalib { // ����XY�궨�����ͣ���Ϊ���������ϣ�EyeOnHand�������������⣨EyeOutHand���������� enum XYCalibType { EyeOnHand, EyeOutHand }; public: /** * @brief ���캯�������ڴ���CXYCalib���� * * @param id �궨��Ψһ��ʶ�� * @param name �궨������ */ CXYCalib(int id, string name); /** * @brief ������������������CXYCalib���� */ ~CXYCalib() {} /** * @brief ��ʼ����XY�궨���� * * @return int �궨�����Ľ����ͨ��0��ʾ�ɹ�����0��ʾʧ�� */ virtual int StartCalib() override; /** * @brief ���ñ궨����IJ��� */ virtual void SetParam() override; /** * @brief �����ݿ��������ȡ�궨����IJ��� */ virtual LONG GetParam() override; /** * @brief ����PR��Pattern Recognition����ID * * @param id PR��Ψһ��ʶ�� */ void SetPRID(int id) { m_stCalibParam_XY.nTempId = id; SetParam(); } /** * @brief ����������ת��Ϊ�������� * * @param pixel ������������� * @param pos ������������� * @return LONG ת�������Ľ����ͨ��OK��ʾ�ɹ���FAIL��ʾʧ�� */ LONG PixelToPos(XY_DOUBLE_STRUCT pixel, XY_DOUBLE_STRUCT& pos); /** * @brief ����������ת��Ϊ�������� * * @param pos ������������� * @param pixel ������������� * @return LONG ת�������Ľ����ͨ��OK��ʾ�ɹ���FAIL��ʾʧ�� */ LONG PosToPixel(XY_DOUBLE_STRUCT pos, XY_DOUBLE_STRUCT& pixel); //��ȡ�궨���� //CALIB_XY GetCalibParam() { return m_stCalibXYParam; } //��ȡ���պ�ľŵ��������� vector<JVision::Point2D> GetNinePixel() { return m_pixels; } //��ȡ�ŵ��������� vector<JVision::Point2D> GetNinePosition() { return m_positions; } LONG MoveToCalibPos(); private: /** * @brief ����Ÿ��궨λ�õ����� */ void calNinePoints(); // ����һ��������ִ�ж�ά����任 //XY_DOUBLE_STRUCT affineTransform(XY_DOUBLE_STRUCT p) { // CManageDB::GetInstance()->GetCMachineCalibration()->GetCalibXYParam(m_nID, m_sName, m_stCalibXYParam); // XY_DOUBLE_STRUCT transformedPoint; // transformedPoint.x = m_stCalibXYParam.m_dA * p.x + m_stCalibXYParam.m_dB * p.y + m_stCalibXYParam.m_dTx; // transformedPoint.y = m_stCalibXYParam.m_dC * p.x + m_stCalibXYParam.m_dD * p.y + m_stCalibXYParam.m_dTy; // return transformedPoint; //} private: // ����궨λ�õ�����Ϊ9�� const static int PosNum = 9; vector<MODULE_CONFIG_STRUCT> m_vecConfigStruct; // �洢XY�궨�IJ��� //CALIB_XY m_stCalibXYParam; CALIB_XY_PARAM m_stCalibParam_XY; // �洢9���궨λ�õ��������� vector<JVision::Point2D> m_positions; //�洢�Ÿ����λ�ã������� vector<JVision::Point2D> m_relativePositions; // �洢9���궨λ�ö�Ӧ���������� vector<JVision::Point2D> m_pixels; // �洢9���궨λ�ö�Ӧ������������� vector<JVision::Point2D> m_relativePixels; };