Ejemplo n.º 1
0
void Dialog::on_Load_Result_Btn_clicked()
{
    QFileDialog FileDialog;
    QString path=FileDialog.getExistingDirectory(this, tr("Open Calibration Files"),  "/home/nubot/ros_workspace/src/omni_vision/calibration/",
                                                QFileDialog::ShowDirsOnly|QFileDialog::DontResolveSymlinks);

    calibration_result_dir_=path.toStdString();
    std::string file_path=calibration_result_dir_+"/CTable.dat";
    std::ifstream CTable_Read(file_path.c_str(), std::ios::binary|std::ios::in);
    CTable_Read.read((char *)CTable_,sizeof(unsigned char)*64*64*64);
    CTable_Read.close();

    file_path=calibration_result_dir_+"/CTableBGR.dat";
    std::ifstream CTableBGR_Read(file_path.c_str(), std::ios::binary|std::ios::out);
    CTableBGR_Read.read((char *)CTable_bgr_,sizeof(unsigned char)*64*64*64);
    CTableBGR_Read.close();


    file_path=calibration_result_dir_+"/ROI.xml";
    cv::FileStorage roi_file(file_path, cv::FileStorage::READ);
    int tmp1,tmp2;
    roi_file["center_point_row"]>>tmp2;
    roi_file["center_point_column"]>>tmp1;
    circle_center_=QPoint(tmp1,tmp2);
    roi_file["big_radius"] >>circle_radius_;
    roi_file ["small_radius"] >> small_radius_;
    roi_file ["rows"]>>height_;
    roi_file ["cols"]<<width_;
    roi_file.release();

    file_path=calibration_result_dir_+"/calibration.xml";
    cv::FileStorage calibration(file_path, cv::FileStorage::READ);
    std::vector<int> poly_pts;
    std::vector<int> lint_pts;
    cv::FileNode calib_result = calibration["Color_Calib"];
    cv::FileNodeIterator it = calib_result.begin(), it_end = calib_result.end();
    int idx=0;
    for( ; it != it_end; ++it)
    {
        QVector<QPoint> polys_pt;
        (*it)["poly_pts"]>>poly_pts;
        polys_pt.push_back(QPoint(poly_pts[0],poly_pts[1]));
        polys_pt.push_back(QPoint(poly_pts[2],poly_pts[3]));
        polys_pt.push_back(QPoint(poly_pts[4],poly_pts[5]));
        polys_pt.push_back(QPoint(poly_pts[6],poly_pts[7]));
        calib_final_result_[idx]=polys_pt;
        QVector<QPoint> line_pt;
        (*it)["line_pts"]>>lint_pts;
        line_pt.push_back(QPoint(lint_pts[0],0));
        line_pt.push_back(QPoint(lint_pts[1],0));
        calib_Line_final_result_[idx]=line_pt;
        idx++;
    }
    calibration.release();

    load_interim_result();
}
Ejemplo n.º 2
0
nubot::ColorSegment::ColorSegment(std::string _table_name)
{
    std::ifstream CTable_Read(_table_name.c_str(), std::ios::binary|std::ios::in);
    CTable_Read.read((char *)table_,sizeof(unsigned char)*64*64*64);
    CTable_Read.close();
}