JeVoisBase  1.20
JeVois Smart Embedded Machine Vision Toolkit Base Modules
Share this page:
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 // ##############################################################################################################
24 { }
25 
26 // ##############################################################################################################
27 std::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 
MorphologyFilter::process
virtual std::string process(cv::Mat const &src, cv::Mat &dst) override
Processing function: filters the image src and puts the results into dst.
Definition: MorphologyFilter.C:27
MorphologyFilter.H
strget
virtual const std::string strget() const=0
MorphologyFilter::~MorphologyFilter
virtual ~MorphologyFilter()
Virtual destructor for safe inheritance.
Definition: MorphologyFilter.C:23