| 27 | } |
| 28 | |
| 29 | void CameraParam::LoadCameraParam() { |
| 30 | Cameras camera_info; |
| 31 | std::string file_name = ros::package::getPath("roborts_camera") + "/config/camera_param.prototxt"; |
| 32 | bool read_state = roborts_common::ReadProtoFromTextFile(file_name, &camera_info); |
| 33 | ROS_ASSERT_MSG(read_state, "Cannot open %s", file_name.c_str()); |
| 34 | |
| 35 | //camera number and ids |
| 36 | int camera_num = camera_info.camera().size(); |
| 37 | cameras_param_.resize(camera_num); |
| 38 | for(unsigned int index = 0; index < camera_num; index++) { |
| 39 | |
| 40 | //camera id |
| 41 | cameras_param_[index].camera_name = camera_info.camera(index).camera_name(); |
| 42 | cameras_param_[index].camera_type = camera_info.camera(index).camera_type(); |
| 43 | cameras_param_[index].camera_path = camera_info.camera(index).camera_path(); |
| 44 | |
| 45 | //camera resolution |
| 46 | cameras_param_[index].resolution_width = camera_info.camera(index).resolution().width(); |
| 47 | cameras_param_[index].resolution_height = camera_info.camera(index).resolution().height(); |
| 48 | cameras_param_[index].width_offset = camera_info.camera(index).resolution().width_offset(); |
| 49 | cameras_param_[index].height_offset = camera_info.camera(index).resolution().height_offset(); |
| 50 | |
| 51 | //fps |
| 52 | cameras_param_[index].fps = camera_info.camera(index).fps(); |
| 53 | |
| 54 | //exposure |
| 55 | cameras_param_[index].auto_exposure = camera_info.camera(index).auto_exposure(); |
| 56 | cameras_param_[index].exposure_value = camera_info.camera(index).exposure_value(); |
| 57 | cameras_param_[index].exposure_time = camera_info.camera(index).exposure_time(); |
| 58 | |
| 59 | //white_balance and gain |
| 60 | cameras_param_[index].auto_white_balance = camera_info.camera(index).auto_white_balance(); |
| 61 | cameras_param_[index].auto_gain = camera_info.camera(index).auto_gain(); |
| 62 | |
| 63 | //constrast |
| 64 | cameras_param_[index].contrast = camera_info.camera(index).contrast(); |
| 65 | |
| 66 | //camera matrix |
| 67 | int camera_m_size = camera_info.camera(index).camera_matrix().data().size(); |
| 68 | double camera_m[camera_m_size]; |
| 69 | std::copy(camera_info.camera(index).camera_matrix().data().begin(), |
| 70 | camera_info.camera(index).camera_matrix().data().end(), |
| 71 | camera_m); |
| 72 | cameras_param_[index].camera_matrix = cv::Mat(3, 3, CV_64F, camera_m).clone(); |
| 73 | |
| 74 | //camera distortion |
| 75 | int rows = camera_info.camera(index).camera_distortion().data_size(); |
| 76 | double camera_dis[rows]; |
| 77 | std::copy(camera_info.camera(index).camera_distortion().data().begin(), |
| 78 | camera_info.camera(index).camera_distortion().data().end(), |
| 79 | camera_dis); |
| 80 | cameras_param_[index].camera_distortion = cv::Mat(rows, 1, CV_64F, camera_dis).clone(); |
| 81 | |
| 82 | //ros camera info |
| 83 | cameras_param_[index].ros_camera_info = boost::make_shared<sensor_msgs::CameraInfo>(); |
| 84 | cameras_param_[index].ros_camera_info->header.frame_id = cameras_param_[index].camera_name; |
| 85 | cameras_param_[index].ros_camera_info->width = cameras_param_[index].resolution_width; |
| 86 | cameras_param_[index].ros_camera_info->height = cameras_param_[index].resolution_height; |
nothing calls this directly
no test coverage detected