Subversion Repositories seema-scanner

Rev

Rev 200 | Rev 208 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 200 Rev 207
Line 20... Line 20...
20
    QSettings settings;
20
    QSettings settings;
21
 
21
 
22
    // Create cameras
22
    // Create cameras
23
    int iNum0 = settings.value("camera0/interfaceNumber", -1).toInt();
23
    int iNum0 = settings.value("camera0/interfaceNumber", -1).toInt();
24
    int cNum0 = settings.value("camera0/cameraNumber", -1).toInt();
24
    int cNum0 = settings.value("camera0/cameraNumber", -1).toInt();
25
    camera0 = CameraFactory::NewCamera(iNum0,cNum0,triggerModeSoftware);
25
    camera0.reset(CameraFactory::NewCamera(iNum0,cNum0,triggerModeSoftware));
26
 
26
 
27
    if(!camera0)
27
    if(!camera0)
28
        return;
28
        return;
29
 
29
 
30
    int iNum1 = settings.value("camera1/interfaceNumber", -1).toInt();
30
    int iNum1 = settings.value("camera1/interfaceNumber", -1).toInt();
31
    int cNum1 = settings.value("camera1/cameraNumber", -1).toInt();
31
    int cNum1 = settings.value("camera1/cameraNumber", -1).toInt();
32
    camera1 = CameraFactory::NewCamera(iNum1,cNum1,triggerModeSoftware);
32
    camera1.reset(CameraFactory::NewCamera(iNum1,cNum1,triggerModeSoftware));
33
 
33
 
34
    if(!camera1)
34
    if(!camera1)
35
        return;
35
        return;
36
 
36
 
37
    // Set camera settings
37
    // Set camera settings
Line 49... Line 49...
49
 
49
 
50
    // Create projector
50
    // Create projector
51
    //int screenNum = settings.value("projector/screenNumber", -1).toInt();
51
    //int screenNum = settings.value("projector/screenNumber", -1).toInt();
52
    int screenNum = settings.value("projector/screenNumber", 1).toInt();
52
    int screenNum = settings.value("projector/screenNumber", 1).toInt();
53
    if(screenNum != -1)
53
    if(screenNum != -1)
54
        projector = new ProjectorOpenGL(screenNum);
54
        projector.reset(new ProjectorOpenGL(screenNum));
55
 
55
 
56
    // Create rotation stage
56
    // Create rotation stage
-
 
57
    for(int i = 0; i<100; i++){
-
 
58
        try{
57
    rotationStage = new RotationStage();
59
            rotationStage.reset(new RotationStage);
-
 
60
            break;
-
 
61
        }
-
 
62
        catch (std::exception e){
-
 
63
            std::cerr << "trying to setup rotation stage" << std::endl;
-
 
64
        }
-
 
65
    }
58
 
66
 
59
    // Create Algorithm
67
    // Create Algorithm
60
    unsigned int screenCols, screenRows;
68
    unsigned int screenCols, screenRows;
61
    projector->getScreenRes(&screenCols, &screenRows);
69
    projector->getScreenRes(&screenCols, &screenRows);
62
    codec = settings.value("algorithm", "GrayCode").toString();
70
    codec = settings.value("algorithm", "GrayCode").toString();
63
    if(codec == "GrayCode")
71
    if(codec == "GrayCode")
64
        algorithm = new AlgorithmGrayCode(screenCols, screenRows);
72
        algorithm.reset(new AlgorithmGrayCode(screenCols, screenRows));
65
    else if(codec == "GrayCodeHorzVert")
73
    else if(codec == "GrayCodeHorzVert")
66
        algorithm = new AlgorithmGrayCodeHorzVert(screenCols, screenRows);
74
        algorithm.reset(new AlgorithmGrayCodeHorzVert(screenCols, screenRows));
67
    else if(codec == "PhaseShiftTwoFreq")
75
    else if(codec == "PhaseShiftTwoFreq")
68
        algorithm = new AlgorithmPhaseShiftTwoFreq(screenCols, screenRows);
76
        algorithm.reset(new AlgorithmPhaseShiftTwoFreq(screenCols, screenRows));
69
    else if(codec == "PhaseShiftThreeFreq")
77
    else if(codec == "PhaseShiftThreeFreq")
70
        algorithm = new AlgorithmPhaseShiftThreeFreq(screenCols, screenRows);
78
        algorithm.reset(new AlgorithmPhaseShiftThreeFreq(screenCols, screenRows));
71
    else if(codec == "PhaseShiftTwoFreqHorzVert")
79
    else if(codec == "PhaseShiftTwoFreqHorzVert")
72
        algorithm = new AlgorithmPhaseShiftTwoFreqHorzVert(screenCols, screenRows);
80
        algorithm = new AlgorithmPhaseShiftTwoFreqHorzVert(screenCols, screenRows);
73
    else if(codec == "PhaseShiftEmbedded")
81
    else if(codec == "PhaseShiftEmbedded")
74
        algorithm = new AlgorithmPhaseShiftEmbedded(screenCols, screenRows);
82
        algorithm.reset(new AlgorithmPhaseShiftEmbedded(screenCols, screenRows));
75
    else if(codec == "LineShift")
83
    else if(codec == "LineShift")
76
        algorithm = new AlgorithmLineShift(screenCols, screenRows);
84
        algorithm.reset(new AlgorithmLineShift(screenCols, screenRows));
77
    else
85
    else
78
        std::cerr << "SMCaptureWorker: invalid codec " << codec.toStdString() << std::endl;
86
        std::cerr << "SMCaptureWorker: invalid codec " << codec.toStdString() << std::endl;
79
 
87
 
80
    // Upload patterns to projector/GPU
88
    // Upload patterns to projector/GPU
81
    for(unsigned int i=0; i<algorithm->getNPatterns(); i++){
89
    for(unsigned int i=0; i<algorithm->getNPatterns(); i++){
Line 113... Line 121...
113
        else
121
        else
114
            projector->displayWhite();
122
            projector->displayWhite();
115
 
123
 
116
 
124
 
117
        // prevent image acquisition timeout
125
        // prevent image acquisition timeout
118
        QTest::qSleep(10);
126
        QTest::qSleep(100);
119
 
127
 
120
        CameraFrame frame;
128
        CameraFrame frame;
121
 
129
 
122
        // trigger cameras
130
        // trigger cameras
123
        camera0->trigger();
131
        camera0->trigger();
Line 151... Line 159...
151
void SMCaptureWorker::rotateTo(float angle){
159
void SMCaptureWorker::rotateTo(float angle){
152
 
160
 
153
    if(!setupSuccessful)
161
    if(!setupSuccessful)
154
        return;
162
        return;
155
 
163
 
-
 
164
    if(rotationStage->Handle)// TODO is this the right check
156
    rotationStage->moveAbsolute(angle);
165
        rotationStage->moveAbsolute(angle);
157
 
166
 
158
    while(rotationStage->isMoving()){
167
    while(rotationStage->isMoving()){
159
 
168
 
160
        // prevent grab timeout in flycapture
169
        // prevent grab timeout in flycapture
161
        QTest::qSleep(10);
170
        QTest::qSleep(10);
Line 292... Line 301...
292
        frameSequence.frames0.push_back(frameCVStacked0);
301
        frameSequence.frames0.push_back(frameCVStacked0);
293
        frameSequence.frames1.push_back(frameCVStacked1);
302
        frameSequence.frames1.push_back(frameCVStacked1);
294
 
303
 
295
    }
304
    }
296
 
305
 
-
 
306
    if(rotationStage->Handle)// TODO is this the right check
297
    frameSequence.rotationAngle = rotationStage->getAngle();
307
        frameSequence.rotationAngle = rotationStage->getAngle();
-
 
308
    else
-
 
309
        frameSequence.rotationAngle = 0;
-
 
310
 
298
    frameSequence.codec = codec;
311
    frameSequence.codec = codec;
299
 
312
 
300
    emit newFrameSequence(frameSequence);
313
    emit newFrameSequence(frameSequence);
301
 
314
 
302
    projector->displayWhite();
315
    projector->displayWhite();
Line 316... Line 329...
316
 
329
 
317
void SMCaptureWorker::stopWork(){
330
void SMCaptureWorker::stopWork(){
318
    working = false;
331
    working = false;
319
}
332
}
320
 
333
 
321
SMCaptureWorker::~SMCaptureWorker(){
-
 
322
    delete projector;
-
 
323
    delete camera0;
-
 
324
    delete camera1;
-
 
325
    delete rotationStage;
-
 
326
}
-