DataReader.cpp

M. Zeunert, 12/08/2012 12:04 PM

Download (2.91 KB)

 
1
#include "DataReader.h"
2

    
3

    
4
DataReader::DataReader(void)
5
{
6
}
7

    
8

    
9
DataReader::~DataReader(void)
10
{
11
}
12

    
13

    
14
int DataReader::initRSB(string inScope){
15

    
16
        rsb::Factory& factory = rsb::Factory::getInstance();
17
        
18
#ifdef USE_IMAGES_INSTEAD_OF_IMAGEFIXATIONS
19
        imageConverter = rsb::converter::Converter<string>::Ptr (new rst::converters::opencv::IplImageConverter());
20
        rsb::converter::converterRepository<string>()->registerConverter(imageConverter);
21
#else
22
        imageConverter = rsb::converter::Converter<string>::Ptr (new rst::converters::opencv::IplImageConverter());
23
        rsb::converter::converterRepository<string>()->registerConverter(imageConverter);
24
        imageFixationConverter = rsb::converter::Converter<string>::Ptr (new rst::converter::ImageFixationConverter());
25
        rsb::converter::converterRepository<string>()->registerConverter(imageFixationConverter);
26
#endif
27

    
28
        imageListener = factory.createListener(rsb::Scope(inScope));    
29

    
30
#ifdef USE_IMAGES_INSTEAD_OF_IMAGEFIXATIONS
31
        imageQueue = boost::shared_ptr<rsc::threading::SynchronizedQueue<boost::shared_ptr<IplImage> > > (new rsc::threading::SynchronizedQueue<boost::shared_ptr<IplImage> >(1));
32
        imageListener->addHandler(rsb::HandlerPtr(new rsb::QueuePushHandler<IplImage>(imageQueue)));
33
#else
34
        imageFixationQueue = boost::shared_ptr<rsc::threading::SynchronizedQueue<boost::shared_ptr<ImageFixation> > > (new rsc::threading::SynchronizedQueue<boost::shared_ptr<ImageFixation> >(1));
35
        imageListener->addHandler(rsb::HandlerPtr(new rsb::QueuePushHandler<ImageFixation>(imageFixationQueue)));
36
#endif
37
        
38

    
39
        return 1;
40
}
41

    
42

    
43
int DataReader::initVidCap(string videoPath,int skipframes){
44
        vidCap.open(videoPath);
45
        if (!vidCap.isOpened()) {
46
                        cout << "Video file could not be opened! Press button to exit" << endl;
47
                        char waitForExit = getchar();
48
                        return 0;
49
        }
50
        vidCap.set(CV_CAP_PROP_POS_FRAMES, skipframes);
51
        return 1;
52
}
53

    
54

    
55
#ifdef USE_IMAGES_INSTEAD_OF_IMAGEFIXATIONS
56

    
57
int DataReader::readImageRSB(Mat* image){
58
                boost::shared_ptr<IplImage> imageTmp = imageQueue->pop();
59
                IplImage image2 = *cvCloneImage(imageTmp.get());
60
                //IplImage* image2 = imageTmp.get();
61
                *image = Mat(&image2);
62
                return 1;
63
}
64

    
65
#else
66

    
67
int DataReader::readImageFixationRSB(Mat* image, Fixation* fixation){
68
        boost::shared_ptr<ImageFixation> imageFixationTmp = imageFixationQueue->pop();
69
        ImageFixation t1 = ImageFixation ( *imageFixationTmp );
70
        IplImage i1 = *t1.getImage();
71
        cout << "EXTRACTED IMAGE. Height = " << i1.height << endl;
72
        IplImage image2 = *cvCloneImage(&i1);
73
        
74
        Fixation fixation2 = Fixation( imageFixationTmp->getFixation() );
75
        cout << "EXTRACTED FIXATION. Start = " << fixation2.start << endl;
76
        *image = Mat(&image2);
77
        *fixation = fixation2;
78
        return 1;
79
}
80

    
81
#endif
82

    
83

    
84

    
85
int DataReader::readImageFile(Mat* image){
86
        
87
                        vidCap >> *image; if(!image->data) return 0;
88
                        int frameNR = vidCap.get(CV_CAP_PROP_POS_FRAMES) + 10;
89
                        vidCap.set(CV_CAP_PROP_POS_FRAMES,  frameNR );
90
                        return 1;
91

    
92
}