Subversion Repositories seema-scanner

Rev

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

Rev 4 Rev 23
Line 18... Line 18...
18
    captureWorkerThread->start();
18
    captureWorkerThread->start();
19
 
19
 
20
    // Connections
20
    // Connections
21
    qRegisterMetaType<cv::Mat>("cv::Mat");
21
    qRegisterMetaType<cv::Mat>("cv::Mat");
22
    qRegisterMetaType< std::vector<cv::Mat> >("std::vector<cv::Mat>");
22
    qRegisterMetaType< std::vector<cv::Mat> >("std::vector<cv::Mat>");
23
    connect(captureWorker, SIGNAL(newFrameSet(std::vector<cv::Mat>)), this, SLOT(onReceiveNewFrameSet(std::vector<cv::Mat>)));
23
    connect(captureWorker, SIGNAL(newFrame(unsigned int, cv::Mat)), this, SLOT(onReceiveFrame(unsigned int, cv::Mat)));
24
 
24
 
25
    // Start capturing
25
    // Start capturing
26
    QMetaObject::invokeMethod(captureWorker, "setup");
26
    QMetaObject::invokeMethod(captureWorker, "setup");
27
    QMetaObject::invokeMethod(captureWorker, "doWork");
27
    QMetaObject::invokeMethod(captureWorker, "doWork");
28
 
28
 
29
}
29
}
30
 
30
 
31
void SMScanner::onReceiveNewFrameSet(std::vector<cv::Mat> frameSet){
31
void SMScanner::onReceiveFrame(unsigned int camId, cv::Mat frame){
32
 
-
 
33
    ui->calibrationCamera0Widget->showImageCV(frameSet[0]);
-
 
34
    ui->calibrationCamera1Widget->showImageCV(frameSet[1]);
-
 
35
 
-
 
36
    ui->captureCamera0Widget->showImageCV(frameSet[0]);
-
 
37
    ui->captureCamera1Widget->showImageCV(frameSet[1]);
-
 
38
 
32
 
-
 
33
    if(camId == 0){
-
 
34
        ui->calibrationCamera0Widget->showImageCV(frame);
-
 
35
        ui->captureCamera0Widget->showImageCV(frame);
-
 
36
    } else if(camId == 1){
-
 
37
        ui->calibrationCamera1Widget->showImageCV(frame);
-
 
38
        ui->captureCamera1Widget->showImageCV(frame);
-
 
39
    }
39
}
40
}
40
 
41
 
41
void SMScanner::on_actionPreferences_triggered()
42
void SMScanner::on_actionPreferences_triggered(){
42
{
43
 
43
    preferenceDialog.show();
44
    preferenceDialog.show();
44
}
45
}
45
 
46
 
46
void SMScanner::closeEvent(QCloseEvent *event){
47
void SMScanner::closeEvent(QCloseEvent *event){
47
 
48
 
-
 
49
    // Stop capturing thread
-
 
50
    connect(captureWorker, SIGNAL(finished()), captureWorker, SLOT(deleteLater()));
-
 
51
    connect(captureWorker, SIGNAL(finished()), captureWorkerThread, SLOT(quit()));
-
 
52
    QMetaObject::invokeMethod(captureWorker, "stopWork");
-
 
53
    captureWorkerThread->quit();
-
 
54
    captureWorkerThread->wait();
-
 
55
 
48
    // Save window geometry
56
    // Save window geometry
49
    settings.setValue("geometry/mainwindow", this->saveGeometry());
57
    settings.setValue("geometry/mainwindow", this->saveGeometry());
50
    settings.setValue("state/mainwindow", this->saveState());
58
    settings.setValue("state/mainwindow", this->saveState());
51
 
59
 
52
    event->accept();
60
    event->accept();
Line 55... Line 63...
55
 
63
 
56
SMScanner::~SMScanner(){
64
SMScanner::~SMScanner(){
57
    delete ui;
65
    delete ui;
58
}
66
}
59
 
67
 
-
 
68
void SMScanner::on_singleCalibrationButton_clicked(){
-
 
69
 
-
 
70
    float position = ui->calibrationRotationDial->value();
-
 
71
    QMetaObject::invokeMethod(captureWorker, "acquireCalibrationSet", Q_ARG(float, position));
-
 
72
 
-
 
73
}
-
 
74
 
-
 
75
void SMScanner::on_calibrationRotationDial_sliderReleased(){
-
 
76
    float angle = ui->calibrationRotationDial->value();
-
 
77
    std::cout << "Rotation stage target: " << angle << std::endl;
-
 
78
    QMetaObject::invokeMethod(captureWorker, "rotateTo", Q_ARG(float, angle));
-
 
79
}
-
 
80
void SMScanner::onReceiveCalibrationSet(CalibrationSet calibrationSet){
-
 
81
    calibrationData.push_back(calibrationSet);
-
 
82
}