00001 /* Copyright (C) 2005 Pierre Moisan (Pierre.Moisan@USherbrooke.ca) 00002 00003 This library is free software; you can redistribute it and/or 00004 modify it under the terms of the GNU Lesser General Public 00005 License as published by the Free Software Foundation; either 00006 version 2.1 of the License, or (at your option) any later version. 00007 00008 This library is distributed in the hope that it will be useful, 00009 but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 Lesser General Public License for more details. 00012 00013 You should have received a copy of the GNU Lesser General Public 00014 License along with this library; if not, write to the Free Software 00015 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00016 */ 00017 00018 #ifndef _VISUALFEATURESEXTRACTION_H_ 00019 #define _VISUALFEATURESEXTRACTION_H_ 00020 00021 #include "BufferedNode.h" 00022 #include <iostream> 00023 #include "Image.h" 00024 #include "cv.h" 00025 #include "VisualFeatureDesc.h" 00026 #include "VisualROI.h" 00027 00028 namespace RobotFlow { 00029 00030 template <class FeatBaseType> 00031 class VisualFeaturesExtraction : public FD::BufferedNode 00032 { 00033 public: 00034 VisualFeaturesExtraction() 00035 { 00036 00037 } 00038 00039 VisualFeaturesExtraction(std::string nodeName, FD::ParameterSet params) 00040 : BufferedNode(nodeName, params) 00041 { 00042 00043 } 00044 00045 virtual ~VisualFeaturesExtraction() 00046 { 00047 00048 } 00049 00050 // Default routine to print a VisualFeaturesExtraction object to an output stream 00051 virtual void printOn(std::ostream &out) const = 0; 00052 00053 // Default routine to read a VisualFeaturesExtraction object from an input stream 00054 virtual void readFrom(std::istream &in) = 0; 00055 00056 virtual void calculate(int output_id, int count, FD::Buffer &out) = 0; 00057 00058 virtual void ExtractFeatures(IplImage *i_frame, VisualROI *i_roi) = 0; 00059 00060 virtual VisualFeatureDesc<FeatBaseType> *GetDescriptor() = 0; 00061 00062 virtual const VisualFeatureDesc<FeatBaseType> *GetCstDescriptor() const = 0; 00063 }; 00064 00065 } 00066 00067 #endif