added FGDStatModel, MOG and MOG2 to gpu performance sample
This commit is contained in:
parent
ed8b6c798b
commit
3a4353f04d
@ -5,6 +5,7 @@
|
|||||||
#include "opencv2/video/video.hpp"
|
#include "opencv2/video/video.hpp"
|
||||||
#include "opencv2/gpu/gpu.hpp"
|
#include "opencv2/gpu/gpu.hpp"
|
||||||
#include "opencv2/nonfree/nonfree.hpp"
|
#include "opencv2/nonfree/nonfree.hpp"
|
||||||
|
#include "opencv2/legacy/legacy.hpp"
|
||||||
#include "performance.h"
|
#include "performance.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@ -1249,3 +1250,166 @@ TEST(FarnebackOpticalFlow)
|
|||||||
|
|
||||||
}}}
|
}}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace cv
|
||||||
|
{
|
||||||
|
template<> void Ptr<CvBGStatModel>::delete_obj()
|
||||||
|
{
|
||||||
|
cvReleaseBGStatModel(&obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(FGDStatModel)
|
||||||
|
{
|
||||||
|
const std::string inputFile = abspath("768x576.avi");
|
||||||
|
|
||||||
|
cv::VideoCapture cap(inputFile);
|
||||||
|
if (!cap.isOpened()) throw runtime_error("can't open 768x576.avi");
|
||||||
|
|
||||||
|
cv::Mat frame;
|
||||||
|
cap >> frame;
|
||||||
|
|
||||||
|
IplImage ipl_frame = frame;
|
||||||
|
cv::Ptr<CvBGStatModel> model(cvCreateFGDStatModel(&ipl_frame));
|
||||||
|
|
||||||
|
while (!TestSystem::instance().stop())
|
||||||
|
{
|
||||||
|
cap >> frame;
|
||||||
|
ipl_frame = frame;
|
||||||
|
|
||||||
|
TestSystem::instance().cpuOn();
|
||||||
|
|
||||||
|
cvUpdateBGStatModel(&ipl_frame, model);
|
||||||
|
|
||||||
|
TestSystem::instance().cpuOff();
|
||||||
|
}
|
||||||
|
TestSystem::instance().cpuComplete();
|
||||||
|
|
||||||
|
cap.open(inputFile);
|
||||||
|
|
||||||
|
cap >> frame;
|
||||||
|
|
||||||
|
cv::gpu::GpuMat d_frame(frame);
|
||||||
|
cv::gpu::FGDStatModel d_model(d_frame);
|
||||||
|
|
||||||
|
while (!TestSystem::instance().stop())
|
||||||
|
{
|
||||||
|
cap >> frame;
|
||||||
|
d_frame.upload(frame);
|
||||||
|
|
||||||
|
TestSystem::instance().gpuOn();
|
||||||
|
|
||||||
|
d_model.update(d_frame);
|
||||||
|
|
||||||
|
TestSystem::instance().gpuOff();
|
||||||
|
}
|
||||||
|
TestSystem::instance().gpuComplete();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MOG)
|
||||||
|
{
|
||||||
|
const std::string inputFile = abspath("768x576.avi");
|
||||||
|
|
||||||
|
cv::VideoCapture cap(inputFile);
|
||||||
|
if (!cap.isOpened()) throw runtime_error("can't open 768x576.avi");
|
||||||
|
|
||||||
|
cv::Mat frame;
|
||||||
|
cap >> frame;
|
||||||
|
|
||||||
|
cv::BackgroundSubtractorMOG mog;
|
||||||
|
cv::Mat foreground;
|
||||||
|
|
||||||
|
mog(frame, foreground, 0.01);
|
||||||
|
|
||||||
|
while (!TestSystem::instance().stop())
|
||||||
|
{
|
||||||
|
cap >> frame;
|
||||||
|
|
||||||
|
TestSystem::instance().cpuOn();
|
||||||
|
|
||||||
|
mog(frame, foreground, 0.01);
|
||||||
|
|
||||||
|
TestSystem::instance().cpuOff();
|
||||||
|
}
|
||||||
|
TestSystem::instance().cpuComplete();
|
||||||
|
|
||||||
|
cap.open(inputFile);
|
||||||
|
|
||||||
|
cap >> frame;
|
||||||
|
|
||||||
|
cv::gpu::GpuMat d_frame(frame);
|
||||||
|
cv::gpu::MOG_GPU d_mog;
|
||||||
|
cv::gpu::GpuMat d_foreground;
|
||||||
|
|
||||||
|
d_mog(d_frame, d_foreground, 0.01);
|
||||||
|
|
||||||
|
while (!TestSystem::instance().stop())
|
||||||
|
{
|
||||||
|
cap >> frame;
|
||||||
|
d_frame.upload(frame);
|
||||||
|
|
||||||
|
TestSystem::instance().gpuOn();
|
||||||
|
|
||||||
|
d_mog(d_frame, d_foreground, 0.01);
|
||||||
|
|
||||||
|
TestSystem::instance().gpuOff();
|
||||||
|
}
|
||||||
|
TestSystem::instance().gpuComplete();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MOG2)
|
||||||
|
{
|
||||||
|
const std::string inputFile = abspath("768x576.avi");
|
||||||
|
|
||||||
|
cv::VideoCapture cap(inputFile);
|
||||||
|
if (!cap.isOpened()) throw runtime_error("can't open 768x576.avi");
|
||||||
|
|
||||||
|
cv::Mat frame;
|
||||||
|
cap >> frame;
|
||||||
|
|
||||||
|
cv::BackgroundSubtractorMOG2 mog2;
|
||||||
|
cv::Mat foreground;
|
||||||
|
cv::Mat background;
|
||||||
|
|
||||||
|
mog2(frame, foreground);
|
||||||
|
mog2.getBackgroundImage(background);
|
||||||
|
|
||||||
|
while (!TestSystem::instance().stop())
|
||||||
|
{
|
||||||
|
cap >> frame;
|
||||||
|
|
||||||
|
TestSystem::instance().cpuOn();
|
||||||
|
|
||||||
|
mog2(frame, foreground);
|
||||||
|
mog2.getBackgroundImage(background);
|
||||||
|
|
||||||
|
TestSystem::instance().cpuOff();
|
||||||
|
}
|
||||||
|
TestSystem::instance().cpuComplete();
|
||||||
|
|
||||||
|
cap.open(inputFile);
|
||||||
|
|
||||||
|
cap >> frame;
|
||||||
|
|
||||||
|
cv::gpu::GpuMat d_frame(frame);
|
||||||
|
cv::gpu::MOG2_GPU d_mog2;
|
||||||
|
cv::gpu::GpuMat d_foreground;
|
||||||
|
cv::gpu::GpuMat d_background;
|
||||||
|
|
||||||
|
d_mog2(d_frame, d_foreground);
|
||||||
|
d_mog2.getBackgroundImage(d_background);
|
||||||
|
|
||||||
|
while (!TestSystem::instance().stop())
|
||||||
|
{
|
||||||
|
cap >> frame;
|
||||||
|
d_frame.upload(frame);
|
||||||
|
|
||||||
|
TestSystem::instance().gpuOn();
|
||||||
|
|
||||||
|
d_mog2(d_frame, d_foreground);
|
||||||
|
d_mog2.getBackgroundImage(d_background);
|
||||||
|
|
||||||
|
TestSystem::instance().gpuOff();
|
||||||
|
}
|
||||||
|
TestSystem::instance().gpuComplete();
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user