You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wheeldetect/molunCar/MultiScaleObj.cpp

65 lines
1.1 KiB
C++

#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];
}