#include "../include/MultiScaleObj.h" #include "../include/CVUtils.h" MultiScaleObj::MultiScaleObj(int levelNum /*= 2*/, float scaleStep /*= 0.5*/) : mLevelNum(levelNum) , mScaleStep(scaleStep) { } MultiScaleObj::~MultiScaleObj() { } MultiScaleImage::MultiScaleImage() : mpProc(NULL) { } MultiScaleImage::~MultiScaleImage() { if (mpProc) { delete mpProc; } } void MultiScaleImage::setBaseLevel(const Mat& img) { mMultiScaleImages.resize(1); mMultiScaleImages[0] = img; } void MultiScaleImage::genMultiScale() { resetMaxLevel(); while (getLevel() >= 1) { mMultiScaleImages.push_back(resize(mMultiScaleImages.back(), mScaleStep, INTER_CUBIC)); downLevel(); } } void MultiScaleImage::proc(void *pData) { resetMaxLevel(); while (getLevel() >= 1) { const Mat& img = mMultiScaleImages[getLevel() - 1]; (*mpProc)(img, this, pData); downLevel(); } } cv::Mat MultiScaleImage::getImg(int level) { if (level < 0 || level >= mLevelNum) { return Mat(); } return mMultiScaleImages[level]; }