Add reader
[trackerpp.git] / src / VideoReader.h
1 #ifndef _IVIDEO_READER_H_
2 #define _IVIDEO_READER_H_
3
4 #include <string>
5 #include <opencv2/opencv.hpp>
6
7 namespace suanzi {
8
9 typedef enum {
10     URL,
11     File,
12     USB
13 } VideoSrcType;
14
15 class VideoReader;
16
17 class VideoReaderFactory
18 {
19 public:
20     static VideoReader* createVideoReader(VideoSrcType type, const std::string& url);
21 };
22
23 class VideoReader
24 {
25 public:
26     VideoReader(VideoSrcType type, const std::string& url) : type(type), url(url){}
27
28     virtual ~VideoReader();
29     virtual bool read(cv::Mat& mat){return true;}
30
31 private:
32     VideoSrcType type;
33
34 protected:
35     std::string url;
36 };
37
38
39 class UrlReader  : public VideoReader
40 {
41 public:
42     UrlReader(VideoSrcType type, const std::string& url);
43     virtual ~UrlReader();
44     bool read(cv::Mat& mat);
45 private:
46     cv::VideoCapture vcap;
47 };
48
49 class FileReader : public VideoReader
50 {
51 public:
52     FileReader(VideoSrcType type, const std::string& url):VideoReader(type, url){}
53 //    void read(){};
54 };
55
56 class UsbReader : public VideoReader
57 {
58 public:
59     UsbReader(VideoSrcType type, const std::string& url):VideoReader(type, url){}
60 //    void read(){};
61 };
62
63
64 }
65
66
67 #endif /* _IVIDEO_READER_H_ */