Images.h
Go to the documentation of this file.
00001 /*
00002  * Images.h
00003  *
00004  *  Created on: Oct 16, 2010
00005  *      Author: ethan
00006  */
00007 
00008 #ifndef IMAGES_H_
00009 #define IMAGES_H_
00010 
00011 #include <opencv2/core/core.hpp>
00012 #include <string>
00013 
00014 #include <pano_core/pano_interfaces.h>
00015 #include <map>
00016 
00017 namespace pano
00018 {
00019 class Images : public serializable
00020 {
00021 
00022 public:
00023   Images() :
00024     ondisk_(false), persist_img_(false)
00025   {
00026   }
00027 
00028   Images(const Images& rhs)
00029   {
00030     copyData(rhs);
00031   }
00032   Images& operator=(const Images& rhs)
00033   {
00034     if (&rhs != this)
00035     {
00036       copyData(rhs);
00037     }
00038     return *this;
00039   }
00040   explicit Images(const cv::Mat& src);
00041   Images(const std::string& fname, const std::string& path = ".");
00042 
00043   virtual ~Images()
00044   {
00045   }
00046   void clear();
00047 
00048   void load(const cv::Mat& src,bool dogray = true);
00049   void load(const cv::Mat& src, const std::string& fname, const std::string& path,bool persist = false);
00050   void load(const std::string& fname, const std::string& path);
00051 
00052   void restore();
00053 
00054   const cv::Mat& src() const
00055   {
00056     return src_;
00057   }
00058   const cv::Mat& grey() const
00059   {
00060     return grey_;
00061   }
00062 
00063   std::string& fname()
00064   {
00065     return fname_;
00066   }
00067   std::string& path()
00068   {
00069     return path_;
00070   }
00071   const std::string& fname() const
00072   {
00073     return fname_;
00074   }
00075   const std::string& path() const
00076   {
00077     return path_;
00078   }
00079 
00080   /*
00081    * serializable functions
00082    */
00083   virtual int version() const
00084   {
00085     return 0;
00086   }
00087 
00088   virtual void serialize(cv::FileStorage& fs) const;
00089   virtual void deserialize(const cv::FileNode& fn);
00090 private:
00091   void copyData(const Images& rhs)
00092   {
00093     fname_ = rhs.fname_;
00094     path_ = rhs.path_;
00095     ondisk_ = rhs.ondisk_;
00096     persist_img_ = rhs.persist_img_;
00097 
00098 
00099     if (!rhs.src_.empty())
00100       rhs.src_.copyTo(src_);
00101     if (!rhs.grey_.empty())
00102       rhs.grey_.copyTo(grey_);
00103   }
00104   cv::Mat src_;
00105   cv::Mat grey_;
00106 
00107   std::string fname_;
00108   std::string path_;
00109   bool ondisk_;
00110   bool persist_img_;
00111 };
00112 
00113 class HugeImage
00114 {
00115 public:
00116 
00117   void setSize(cv::Size size){
00118     size_ = size;
00119   }
00120  // cv::Rect getEncompassingRect() const;
00121   cv::Mat loadAll() const;
00122   void serialize(const std::string& name) const;
00123   void deserialize(const std::string& name);
00124 
00125   void addRoi(int id, cv::Rect rect)
00126   {
00127     rois_[id] = rect;
00128   }
00129 
00130   std::string addName(int id, std::string&prefix);
00131 
00132   cv::Rect getRoi(int id)
00133   {
00134     return rois_[id];
00135   }
00136   std::string getName(int id)
00137   {
00138     return names_[id];
00139   }
00140 
00141 private:
00142   std::map<int, cv::Rect> rois_;
00143   std::map<int, std::string> names_;
00144   cv::Size size_;
00145 };
00146 
00147 }
00148 #endif /* IMAGES_H_ */


pano_core
Author(s): Ethan Rublee
autogenerated on Mon Oct 6 2014 08:04:38