diff --git a/ccv/sheet5/gauss_pyramid.cpp b/ccv/sheet5/gauss_pyramid.cpp new file mode 100644 index 0000000..108f51b --- /dev/null +++ b/ccv/sheet5/gauss_pyramid.cpp @@ -0,0 +1,25 @@ +#include "gauss_pyramid.h" + +gauss_pyramid::gauss_pyramid() {} + +gauss_pyramid::gauss_pyramid(cv::Mat img, float sigma, int number_of_layers) +{ + cv::Mat blurredImage; + cv::Mat resizedImage = img.clone(); + for (int i = 0; i < number_of_layers; i++) + { + cv::GaussianBlur(resizedImage, blurredImage, cv::Size(0, 0), sigma, sigma, cv::BORDER_REPLICATE); + _layers.push_back(blurredImage.clone()); + cv::resize(blurredImage, resizedImage, cv::Size(), 0.5, 0.5, cv::INTER_NEAREST); + } +} + +cv::Mat gauss_pyramid::get(int layer) +{ + return _layers.at((unsigned long) layer); +} + +unsigned long gauss_pyramid::get_number_of_layers() +{ + return _layers.size(); +} diff --git a/ccv/sheet5/gauss_pyramid.h b/ccv/sheet5/gauss_pyramid.h new file mode 100644 index 0000000..4583332 --- /dev/null +++ b/ccv/sheet5/gauss_pyramid.h @@ -0,0 +1,18 @@ +#ifndef SHEET3_GAUSS_PYRAMID_H +#define SHEET3_GAUSS_PYRAMID_H + +#include + +class gauss_pyramid +{ +private: + std::vector _layers; +public: + gauss_pyramid(); + gauss_pyramid(cv::Mat img, float sigma, int number_of_layers); + cv::Mat get(int layer); + unsigned long get_number_of_layers(); +}; + + +#endif //SHEET3_GAUSS_PYRAMID_H