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(); }
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(); }