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.
65 lines
1.1 KiB
C++
65 lines
1.1 KiB
C++
|
5 years ago
|
#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];
|
||
|
|
}
|