|
|
|
|
|
/*! \file MultiScaleObj.h
|
|
|
|
|
|
|
|
|
|
|
|
Copyright (C) 2014 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾.
|
|
|
|
|
|
|
|
|
|
|
|
Created by bang.jin at 2017/02/20.
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __MultiScaleObj_h_
|
|
|
|
|
|
#define __MultiScaleObj_h_
|
|
|
|
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include <opencv2/opencv.hpp>
|
|
|
|
|
|
#include <opencv2/opencv_modules.hpp>
|
|
|
|
|
|
|
|
|
|
|
|
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<Mat> mMultiScaleImages;
|
|
|
|
|
|
MultiScaleImageProc* mpProc;
|
|
|
|
|
|
private:
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // __MultiScaleObj_h_
|