Update to 2.0.0 tree from current Fremantle build
[opencv] / apps / traincascade / imagestorage.h
diff --git a/apps/traincascade/imagestorage.h b/apps/traincascade/imagestorage.h
new file mode 100644 (file)
index 0000000..047e32b
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef _OPENCV_IMAGESTORAGE_H_
+#define _OPENCV_IMAGESTORAGE_H_
+
+#include <highgui.h>
+
+using namespace cv;
+
+class CvCascadeImageReader
+{
+public:
+    bool create( const String _posFilename, const String _negFilename, Size _winSize );
+    void restart() { posReader.restart(); }
+    bool getNeg(Mat &_img) { return negReader.get( _img ); }
+    bool getPos(Mat &_img) { return posReader.get( _img ); }
+
+private:
+    class PosReader
+    {
+    public:
+        PosReader();
+        virtual ~PosReader();
+        bool create( const String _filename );
+        bool get( Mat &_img );
+        void restart();
+
+        short* vec;
+        FILE*  file;
+        int    count;
+        int    vecSize;
+        int    last;
+        int    base;
+    } posReader;
+
+    class NegReader
+    {
+    public:
+        NegReader();
+        bool create( const String _filename, Size _winSize );
+        bool get( Mat& _img );
+        bool nextImg();
+
+        Mat     src, img;
+        vector<String> imgFilenames;
+        Point   offset, point;
+        float   scale;
+        float   scaleFactor;
+        float   stepFactor;
+        size_t  last, round;
+        Size    winSize;
+    } negReader;
+};
+
+#endif