Go to the documentation of this file.00001
00002
00003
00004
00005
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
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
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