/*! \file MultiScaleObj.h Copyright (C) 2014 杭州利珀科技有限公司. Created by bang.jin at 2017/02/20. */ #ifndef __MultiScaleObj_h_ #define __MultiScaleObj_h_ #include #include #include using std::vector; using namespace cv; class MultiScaleObj; class MultiScaleImageProc { public: virtual void operator()(const Mat& img, MultiScaleObj* pMSObj, void* pData) = 0; }; class MultiScaleObj { public: MultiScaleObj(int level = 2, float scaleStep = 0.5); ~MultiScaleObj(); int getLevelNum() const { return mLevelNum; } void setLevelNum(int val) { mLevelNum = val; } int getLevel() const { return mLevel; } float getScaleStep() const { return mScaleStep; } void setScaleStep(float iVal) { mScaleStep = iVal; } int getMaxLevel() const { return getLevelNum() - 1; } int resetMaxLevel() { setLevel(getMaxLevel()); return getLevel(); } int downLevel() { mLevel--; return mLevel; } virtual void proc(void *pData) = 0; protected: void setLevel(int val) { mLevel = val; } int mLevelNum; int mLevel; float mScaleStep; private: }; class MultiScaleImage : public MultiScaleObj { public: MultiScaleImage(); ~MultiScaleImage(); void setBaseLevel(const Mat& img); void genMultiScale(); virtual void proc(void *pData); MultiScaleImageProc* getProc() const { return mpProc; } void setProc(MultiScaleImageProc* iVal) { mpProc = iVal; } Mat getImg(int level); protected: vector mMultiScaleImages; MultiScaleImageProc* mpProc; private: }; #endif // __MultiScaleObj_h_