Subversion Repositories seema-scanner

Rev

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

Rev 128 Rev 135
Line 600... Line 600...
600
        ui->captureTreeWidget->clear();
600
        ui->captureTreeWidget->clear();
601
    }
601
    }
602
}
602
}
603
 
603
 
604
 
604
 
-
 
605
 
-
 
606
void SMScanner::on_actionImport_Parameters_triggered(){
-
 
607
 
-
 
608
    QString fileName = QFileDialog::getOpenFileName(this, "Import calibration parameters", QString(), "*.xml");
-
 
609
    QFileInfo info(fileName);
-
 
610
    QString type = info.suffix();
-
 
611
    if(type != ".xml"){
-
 
612
        std::cerr << "Error: calibration parameters must be in .xml file." << std::endl;
-
 
613
        return;
-
 
614
    }
-
 
615
 
-
 
616
    SMCalibrationParameters cal;
-
 
617
    cal.importFromXML(fileName);
-
 
618
 
-
 
619
    settings.setValue("calibration/parameters",  QVariant::fromValue(cal));
-
 
620
    ui->pointCloudWidget->updateCalibrationParameters();
-
 
621
}
-
 
622
 
-
 
623
void SMScanner::on_actionImport_Sets_triggered(){
-
 
624
 
-
 
625
    QString dirName = QFileDialog::getExistingDirectory(this, "Import calibration sets", QString());
-
 
626
 
-
 
627
    QDir dir(dirName);
-
 
628
    QStringList fileNames0 = dir.entryList(QStringList("frame0_*.png"));
-
 
629
    QStringList fileNames1 = dir.entryList(QStringList("frame1_*.png"));
-
 
630
 
-
 
631
    if(fileNames0.empty() || fileNames1.empty() || fileNames0.count() != fileNames1.count()){
-
 
632
        std::cerr << "Error: could not load calibration sets. Directory must contain .png files for both cameras." << std::endl;
-
 
633
        return;
-
 
634
    }
-
 
635
 
-
 
636
    calibrationData.clear();
-
 
637
    ui->calibrationListWidget->clear();
-
 
638
 
-
 
639
    int nSets = fileNames0.size();
-
 
640
 
-
 
641
    for(unsigned int i=0; i<nSets; i++){
-
 
642
 
-
 
643
        SMCalibrationSet calibrationSet;
-
 
644
 
-
 
645
        QString fileName0 = QString("%1/%2.png").arg(dirName).arg(fileNames0.at(i));
-
 
646
        calibrationSet.frame0 = cv::imread(fileName0.toStdString());
-
 
647
        QString fileName1 = QString("%1/%2.png").arg(dirName).arg(fileNames1.at(i));
-
 
648
        calibrationSet.frame1 = cv::imread(fileName1.toStdString());
-
 
649
 
-
 
650
        int id = ui->calibrationListWidget->count();
-
 
651
        calibrationSet.id = id;
-
 
652
 
-
 
653
        calibrationData.push_back(calibrationSet);
-
 
654
 
-
 
655
        // Add identifier to list
-
 
656
        QListWidgetItem* item = new QListWidgetItem(QString("Calibration Set %1 -- %2 deg").arg(id).arg(calibrationSet.rotationAngle), ui->calibrationListWidget);
-
 
657
        item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
-
 
658
        item->setCheckState(Qt::Checked);
-
 
659
        ui->calibrationListWidget->addItem(item);
-
 
660
 
-
 
661
        QCoreApplication::processEvents();
-
 
662
    }
-
 
663
 
-
 
664
    // Set enabled checkmark
-
 
665
    if(calibrationData.size() >= 2)
-
 
666
        ui->calibrateButton->setEnabled(true);
-
 
667
}