JeVoisBase  1.21
JeVois Smart Embedded Machine Vision Toolkit Base Modules
Share this page:
Loading...
Searching...
No Matches
MorphologyFilter.C
Go to the documentation of this file.
1// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2//
3// JeVois Smart Embedded Machine Vision Toolkit - Copyright (C) 2017 by Laurent Itti, the University of Southern
4// California (USC), and iLab at USC. See http://iLab.usc.edu and http://jevois.org for information about this project.
5//
6// This file is part of the JeVois Smart Embedded Machine Vision Toolkit. This program is free software; you can
7// redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software
8// Foundation, version 2. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
9// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
10// License for more details. You should have received a copy of the GNU General Public License along with this program;
11// if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
12//
13// Contact information: Laurent Itti - 3641 Watt Way, HNB-07A - Los Angeles, CA 90089-2520 - USA.
14// Tel: +1 213 740 3527 - itti@pollux.usc.edu - http://iLab.usc.edu - http://jevois.org
15// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
16/*! \file */
17
19
20#include <opencv2/imgproc/imgproc.hpp>
21
22// ##############################################################################################################
25
26// ##############################################################################################################
27std::string MorphologyFilter::process(cv::Mat const & src, cv::Mat & dst)
28{
29 cv::Mat kernel;
30
31 switch (kshape::get())
32 {
33 case morphologyfilter::KernelShape::Rectangle:
34 kernel = cv::getStructuringElement(cv::MORPH_RECT, ksize::get()); break;
35 case morphologyfilter::KernelShape::Cross:
36 kernel = cv::getStructuringElement(cv::MORPH_CROSS, ksize::get()); break;
37 case morphologyfilter::KernelShape::Ellipse:
38 kernel = cv::getStructuringElement(cv::MORPH_ELLIPSE, ksize::get()); break;
39 }
40
41 cv::MorphTypes mop;
42
43 switch (op::get())
44 {
45 case morphologyfilter::MorphoOp::Erode: mop = cv::MORPH_ERODE; break;
46 case morphologyfilter::MorphoOp::Dilate: mop = cv::MORPH_DILATE; break;
47 case morphologyfilter::MorphoOp::Open: mop = cv::MORPH_OPEN; break;
48 case morphologyfilter::MorphoOp::Close: mop = cv::MORPH_CLOSE; break;
49 case morphologyfilter::MorphoOp::Gradient: mop = cv::MORPH_GRADIENT; break;
50 case morphologyfilter::MorphoOp::TopHat: mop = cv::MORPH_TOPHAT; break;
51 case morphologyfilter::MorphoOp::BlackHat: mop = cv::MORPH_BLACKHAT; break;
52 }
53
54 cv::morphologyEx(src, dst, mop, kernel, anchor::get(), iter::get());
55
56 return "op=" + op::strget() + ", kshape=" + kshape::strget() + ",\nksize=[" + ksize::strget() +
57 "], anchor=[" + anchor::strget() + "], iter=" + iter::strget();
58}
59
virtual std::string process(cv::Mat const &src, cv::Mat &dst) override
Processing function: filters the image src and puts the results into dst.
virtual ~MorphologyFilter()
Virtual destructor for safe inheritance.