Subversion Repositories seema-scanner

Rev

Rev 114 | Rev 121 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 114 Rev 120
Line 7... Line 7...
7
#include <QCoreApplication>
7
#include <QCoreApplication>
8
#include <QTime>
8
#include <QTime>
9
#include <QSettings>
9
#include <QSettings>
10
#include <QtTest/QTest>
10
#include <QtTest/QTest>
11
 
11
 
-
 
12
#include "cvtools.h"
-
 
13
 
12
void SMCaptureWorker::setup(){
14
void SMCaptureWorker::setup(){
13
 
15
 
14
    QSettings settings;
16
    QSettings settings;
15
 
17
 
16
    // Create cameras
18
    // Create cameras
Line 88... Line 90...
88
        camera1->trigger();
90
        camera1->trigger();
89
 
91
 
90
        // retrieve raw frames
92
        // retrieve raw frames
91
        frame = camera0->getFrame();
93
        frame = camera0->getFrame();
92
        cv::Mat frameCV;
94
        cv::Mat frameCV;
93
        frameCV  = cv::Mat(frame.height, frame.width, CV_8UC1, frame.memory);
95
        frameCV  = cv::Mat(frame.height, frame.width, CV_16UC1, frame.memory);
94
        frameCV = frameCV.clone();
96
        frameCV = frameCV.clone();
-
 
97
        cvtools::rshift(frameCV, 8);
-
 
98
        frameCV.convertTo(frameCV, CV_8UC1);
95
        emit newFrame(0, frameCV);
99
        emit newFrame(0, frameCV);
96
 
100
 
97
        frame = camera1->getFrame();
101
        frame = camera1->getFrame();
98
        frameCV  = cv::Mat(frame.height, frame.width, CV_8UC1, frame.memory);
102
        frameCV  = cv::Mat(frame.height, frame.width, CV_16UC1, frame.memory);
99
        frameCV = frameCV.clone();
103
        frameCV = frameCV.clone();
-
 
104
        cvtools::rshift(frameCV, 8);
-
 
105
        frameCV.convertTo(frameCV, CV_8UC1);
100
        emit newFrame(1, frameCV);
106
        emit newFrame(1, frameCV);
101
 
107
 
102
        //std::cout << "SMCaptureWorker idle " << time.restart() << "ms" << std::endl;
108
        //std::cout << "SMCaptureWorker idle " << time.restart() << "ms" << std::endl;
103
 
109
 
104
        // Process events e.g. perform a task
110
        // Process events e.g. perform a task
Line 120... Line 126...
120
 
126
 
121
        // retrieve frames
127
        // retrieve frames
122
        CameraFrame frame;
128
        CameraFrame frame;
123
        frame = camera0->getFrame();
129
        frame = camera0->getFrame();
124
        cv::Mat frameCV;
130
        cv::Mat frameCV;
125
        frameCV  = cv::Mat(frame.height, frame.width, CV_8UC1, frame.memory);
131
        frameCV  = cv::Mat(frame.height, frame.width, CV_16UC1, frame.memory);
126
        frameCV = frameCV.clone();
132
        frameCV = frameCV.clone();
127
        emit newFrame(0, frameCV);
133
        emit newFrame(0, frameCV);
128
        frame = camera1->getFrame();
134
        frame = camera1->getFrame();
129
        frameCV  = cv::Mat(frame.height, frame.width, CV_8UC1, frame.memory);
135
        frameCV  = cv::Mat(frame.height, frame.width, CV_16UC1, frame.memory);
130
        frameCV = frameCV.clone();
136
        frameCV = frameCV.clone();
131
        emit newFrame(1, frameCV);
137
        emit newFrame(1, frameCV);
132
    }
138
    }
133
 
139
 
134
    emit rotatedTo(angle);
140
    emit rotatedTo(angle);
Line 139... Line 145...
139
    if(angle != -1.0)
145
    if(angle != -1.0)
140
        rotateTo(angle);
146
        rotateTo(angle);
141
 
147
 
142
    CameraFrame frame;
148
    CameraFrame frame;
143
    SMCalibrationSet calibrationSet;
149
    SMCalibrationSet calibrationSet;
144
    cv::Mat frameCVStacked0(camera0->getFrameHeight(), camera0->getFrameWidth(), CV_16UC1, cv::Scalar(0));
150
    cv::Mat frameCVStacked0(camera0->getFrameHeight(), camera0->getFrameWidth(), CV_32SC1, cv::Scalar(0));
145
    cv::Mat frameCVStacked1(camera1->getFrameHeight(), camera1->getFrameWidth(), CV_16UC1, cv::Scalar(0));
151
    cv::Mat frameCVStacked1(camera1->getFrameHeight(), camera1->getFrameWidth(), CV_32SC1, cv::Scalar(0));
146
 
152
 
147
    for(int i=0; i<stacking; i++){
153
    for(int i=0; i<stacking; i++){
148
        // trigger cameras
154
        // trigger cameras
149
        camera0->trigger();
155
        camera0->trigger();
150
        camera1->trigger();
156
        camera1->trigger();
151
 
157
 
152
        // retrieve frames
158
        // retrieve frames
153
        frame = camera0->getFrame();
159
        frame = camera0->getFrame();
154
        cv::Mat frameCV;
160
        cv::Mat frameCV;
155
        frameCV  = cv::Mat(frame.height, frame.width, CV_8UC1, frame.memory);
161
        frameCV  = cv::Mat(frame.height, frame.width, CV_16UC1, frame.memory);
156
        frameCV = frameCV.clone();
162
        frameCV = frameCV.clone();
157
        cv::add(frameCV, frameCVStacked0, frameCVStacked0, cv::noArray(), CV_16UC1);
163
        cv::add(frameCV, frameCVStacked0, frameCVStacked0, cv::noArray(), CV_32SC1);
158
 
-
 
-
 
164
cvtools::writeMat(frameCV, "frameCV.mat", "frameCV");
-
 
165
cvtools::writeMat(frameCVStacked0, "frameCVStacked0.mat", "frameCVStacked0");
159
        emit newFrame(0, frameCV);
166
        emit newFrame(0, frameCV);
160
 
167
 
161
        frame = camera1->getFrame();
168
        frame = camera1->getFrame();
162
        frameCV  = cv::Mat(frame.height, frame.width, CV_8UC1, frame.memory);
169
        frameCV  = cv::Mat(frame.height, frame.width, CV_16UC1, frame.memory);
163
        frameCV = frameCV.clone();
170
        frameCV = frameCV.clone();
164
        cv::add(frameCV, frameCVStacked1, frameCVStacked1, cv::noArray(), CV_16UC1);
171
        cv::add(frameCV, frameCVStacked1, frameCVStacked1, cv::noArray(), CV_32SC1);
165
 
172
 
166
        emit newFrame(1, frameCV);
173
        emit newFrame(1, frameCV);
167
 
174
 
168
    }
175
    }
169
 
176
 
170
    frameCVStacked0.convertTo(frameCVStacked0, CV_8UC1, 1.0/stacking);
177
    frameCVStacked0.convertTo(frameCVStacked0, CV_16UC1, 1.0/stacking);
-
 
178
cvtools::writeMat(frameCVStacked0, "frameCVStacked0a.mat", "frameCVStacked0a");
171
    frameCVStacked1.convertTo(frameCVStacked1, CV_8UC1, 1.0/stacking);
179
    frameCVStacked1.convertTo(frameCVStacked1, CV_16UC1, 1.0/stacking);
172
 
180
 
173
    calibrationSet.frame0 = frameCVStacked0;
181
    calibrationSet.frame0 = frameCVStacked0;
174
    calibrationSet.frame1 = frameCVStacked1;
182
    calibrationSet.frame1 = frameCVStacked1;
175
 
183
 
176
    calibrationSet.rotationAngle = rotationStage->getAngle();
184
    calibrationSet.rotationAngle = rotationStage->getAngle();
Line 197... Line 205...
197
        // display pattern
205
        // display pattern
198
        projector->displayPattern(i);
206
        projector->displayPattern(i);
199
 
207
 
200
        QTest::qSleep(delay);
208
        QTest::qSleep(delay);
201
 
209
 
202
        cv::Mat frameCVStacked0(camera0->getFrameHeight(), camera0->getFrameWidth(), CV_16UC1, cv::Scalar(0));
210
        cv::Mat frameCVStacked0(camera0->getFrameHeight(), camera0->getFrameWidth(), CV_32SC1, cv::Scalar(0));
203
        cv::Mat frameCVStacked1(camera1->getFrameHeight(), camera1->getFrameWidth(), CV_16UC1, cv::Scalar(0));
211
        cv::Mat frameCVStacked1(camera1->getFrameHeight(), camera1->getFrameWidth(), CV_32SC1, cv::Scalar(0));
204
        for(int i=0; i<stacking; i++){
212
        for(int i=0; i<stacking; i++){
205
            // trigger cameras
213
            // trigger cameras
206
            camera0->trigger();
214
            camera0->trigger();
207
            camera1->trigger();
215
            camera1->trigger();
208
 
216
 
209
            // retrieve frames
217
            // retrieve frames
210
            frame = camera0->getFrame();
218
            frame = camera0->getFrame();
211
            cv::Mat frameCV;
219
            cv::Mat frameCV;
212
            frameCV  = cv::Mat(frame.height, frame.width, CV_8UC1, frame.memory);
220
            frameCV  = cv::Mat(frame.height, frame.width, CV_16UC1, frame.memory);
213
            frameCV = frameCV.clone();
221
            frameCV = frameCV.clone();
214
            cv::add(frameCV, frameCVStacked0, frameCVStacked0, cv::noArray(), CV_16UC1);
222
            cv::add(frameCV, frameCVStacked0, frameCVStacked0, cv::noArray(), CV_32SC1);
215
 
223
 
216
            emit newFrame(0, frameCV);
224
            emit newFrame(0, frameCV);
217
 
225
 
218
            frame = camera1->getFrame();
226
            frame = camera1->getFrame();
219
            frameCV  = cv::Mat(frame.height, frame.width, CV_8UC1, frame.memory);
227
            frameCV  = cv::Mat(frame.height, frame.width, CV_16UC1, frame.memory);
220
            frameCV = frameCV.clone();
228
            frameCV = frameCV.clone();
221
            cv::add(frameCV, frameCVStacked1, frameCVStacked1, cv::noArray(), CV_16UC1);
229
            cv::add(frameCV, frameCVStacked1, frameCVStacked1, cv::noArray(), CV_32SC1);
222
 
230
 
223
            emit newFrame(1, frameCV);
231
            emit newFrame(1, frameCV);
224
 
232
 
225
        }
233
        }
226
 
234
 
227
        frameCVStacked0.convertTo(frameCVStacked0, CV_8UC1, 1.0/stacking);
235
        frameCVStacked0.convertTo(frameCVStacked0, CV_16UC1, 1.0/stacking);
228
        frameCVStacked1.convertTo(frameCVStacked1, CV_8UC1, 1.0/stacking);
236
        frameCVStacked1.convertTo(frameCVStacked1, CV_16UC1, 1.0/stacking);
229
 
237
 
230
        frameSequence.frames0.push_back(frameCVStacked0);
238
        frameSequence.frames0.push_back(frameCVStacked0);
231
        frameSequence.frames1.push_back(frameCVStacked1);
239
        frameSequence.frames1.push_back(frameCVStacked1);
232
 
240
 
233
    }
241
    }