#pragma once #include "AlignFinder.h" #include typedef std::vector VectorDouble; typedef std::vector::iterator VectorDoubleIt; typedef std::vector::const_iterator constVectorDoubleIt; class AFX_EXT_CLASS CAlignFinder_Corner : public CAlignFinder { public: CAlignFinder_Corner(int nIndex=0); virtual ~CAlignFinder_Corner(void); virtual SAlignFindResult FindAlign(CCHImageData *pImageData, const SAlignFindParam& findParam, CCHImageData *pTempImage=NULL); virtual SAlignFindResult FindAlign(CCHImageData *pImageData, CCHImageData *pTempImage=NULL); virtual SAlignFindResult FindAlign(BYTE* pImage, int nWidth, int nHeight, const SAlignFindParam& findParam); protected: virtual SAlignFindResult FindAlign(BYTE* pImage, int nWidth, int nHeight); int FindAlignCorner(SAlignFindResult& findResult); int ProjectionXDirection(CCHImageData *pImageData, VectorDouble& vecArray, VectorDouble& vecResult, int nKernelSize); int ProjectionYDirection(CCHImageData *pImageData, VectorDouble& vecArray, VectorDouble& vecResult, int nKernelSize); int CalculateCrossPoint(int nDirType, const VectorDouble& vecX, const VectorDouble& vecY, int nThreshold, int nIgnore, SAlignFindResult& sFindResult); void PrintArrayValue(const CString& strFilename, const VectorDouble& vecArray); };