MCPcopy Create free account
hub / github.com/DennisLiu1993/Fastest_Image_Pattern_Matching / Match

Method Match

MatchTool/MatchToolDlg.cpp:772–1148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

770 //DDD
771}
772BOOL CMatchToolDlg::Match ()
773{
774 if (m_matSrc.empty () || m_matDst.empty ())
775 return FALSE;
776 if ((m_matDst.cols < m_matSrc.cols && m_matDst.rows > m_matSrc.rows) || (m_matDst.cols > m_matSrc.cols && m_matDst.rows < m_matSrc.rows))
777 return FALSE;
778 if (m_matDst.size ().area () > m_matSrc.size ().area ())
779 return FALSE;
780 if (!m_TemplData.bIsPatternLearned)
781 return FALSE;
782 UpdateData (1);
783 double d1 = clock ();
784 //決定金字塔層數 總共為1 + iLayer層
785 int iTopLayer = GetTopLayer (&m_matDst, (int)sqrt ((double)m_iMinReduceArea));
786 //建立金字塔
787 vector<Mat> vecMatSrcPyr;
788 if (m_ckBitwiseNot.GetCheck ())
789 {
790 Mat matNewSrc = 255 - m_matSrc;
791 buildPyramid (matNewSrc, vecMatSrcPyr, iTopLayer);
792 imshow ("1", matNewSrc);
793 moveWindow ("1", 0, 0);
794 }
795 else
796 buildPyramid (m_matSrc, vecMatSrcPyr, iTopLayer);
797
798 s_TemplData* pTemplData = &m_TemplData;
799
800 //第一階段以最頂層找出大致角度與ROI
801 double dAngleStep = atan (2.0 / max (pTemplData->vecPyramid[iTopLayer].cols, pTemplData->vecPyramid[iTopLayer].rows)) * R2D;
802
803 vector<double> vecAngles;
804
805 if (m_bToleranceRange)
806 {
807 if (m_dTolerance1 >= m_dTolerance2 || m_dTolerance3 >= m_dTolerance4)
808 {
809 AfxMessageBox (L"角度範圍設定異常,左值須小於右值");
810 return FALSE;
811 }
812 for (double dAngle = m_dTolerance1; dAngle < m_dTolerance2 + dAngleStep; dAngle += dAngleStep)
813 vecAngles.push_back (dAngle);
814 for (double dAngle = m_dTolerance3; dAngle < m_dTolerance4 + dAngleStep; dAngle += dAngleStep)
815 vecAngles.push_back (dAngle);
816 }
817 else
818 {
819 if (m_dToleranceAngle < VISION_TOLERANCE)
820 vecAngles.push_back (0.0);
821 else
822 {
823 for (double dAngle = 0; dAngle < m_dToleranceAngle + dAngleStep; dAngle += dAngleStep)
824 vecAngles.push_back (dAngle);
825 for (double dAngle = -dAngleStep; dAngle > -m_dToleranceAngle - dAngleStep; dAngle -= dAngleStep)
826 vecAngles.push_back (dAngle);
827 }
828 }
829

Callers

nothing calls this directly

Calls 3

s_MatchParameterClass · 0.85
GetMaxValueLocMethod · 0.80
clearMethod · 0.80

Tested by

no test coverage detected