void DenseSegmentation::PreprocessFeatures(
    const std::vector<cv::Mat>& input_features,
    std::vector<cv::Mat>* output_features) {
  CHECK_NOTNULL(output_features);
  CHECK_EQ(1, input_features.size())
    << "Only appearance supported by default DenseSegmentation";

  output_features->resize(1);

  const cv::Mat& input = input_features[0];
  CHECK_EQ(3, input.channels());
  CHECK_EQ(input.rows, frame_height_);
  CHECK_EQ(input.cols, frame_width_);
  output_features->at(0).create(input.rows, input.cols, CV_32FC3);
  cv::Mat& output = (*output_features)[0];

  cv::Mat tmp_frame(input.rows, input.cols, CV_32FC3);
  input.convertTo(tmp_frame, CV_32FC3, 1.0 / 255.0);

  // Smooth image based on our options.
  switch (options_.presmoothing) {
    case DenseSegmentationOptions::PRESMOOTH_NONE:
      output = tmp_frame;
      break;

    case DenseSegmentationOptions::PRESMOOTH_GAUSSIAN:
      cv::GaussianBlur(tmp_frame, output, cv::Size(3, 3), 1.5);
      break;

    case DenseSegmentationOptions::PRESMOOTH_BILATERAL:
      // TODO(grundman): Quite heavy, reduce ?  Original values: 1.5, 0.15
      imagefilter::BilateralFilter(tmp_frame, 3.0, 0.25, &output);
      break;
  }
}
Exemple #2
0
int wgt_spkm_ext::init()
{

	try {

		if (robot.state.edp.pid != -1) {
			if (robot.state.edp.is_synchronised) // Czy robot jest zsynchronizowany?
			{
				//ui.pushButton_execute->setDisabled(false);

				robot.ui_ecp_robot->epos_external_reply_data_request_port->set_request();
				robot.ui_ecp_robot->execute_motion();
				robot.ui_ecp_robot->epos_external_reply_data_request_port->get();

				set_single_axis(0, ui.doubleSpinBox_mcur_0, ui.radioButton_mip_0);
				set_single_axis(1, ui.doubleSpinBox_mcur_1, ui.radioButton_mip_1);
				set_single_axis(2, ui.doubleSpinBox_mcur_2, ui.radioButton_mip_2);
				set_single_axis(3, ui.doubleSpinBox_mcur_3, ui.radioButton_mip_3);
				set_single_axis(4, ui.doubleSpinBox_mcur_4, ui.radioButton_mip_4);
				set_single_axis(5, ui.doubleSpinBox_mcur_5, ui.radioButton_mip_5);

				lib::epos::epos_reply &er = robot.ui_ecp_robot->epos_external_reply_data_request_port->data;

				lib::Homog_matrix tmp_frame(er.current_frame);
				lib::Xyz_Angle_Axis_vector tmp_vector;
				double current_position[6];
				tmp_frame.get_xyz_angle_axis(tmp_vector);
				tmp_vector.to_table(current_position);

				ui.doubleSpinBox_cur_p0->setValue(current_position[0]);
				ui.doubleSpinBox_cur_p1->setValue(current_position[1]);
				ui.doubleSpinBox_cur_p2->setValue(current_position[2]);
				ui.doubleSpinBox_cur_p3->setValue(current_position[3]);
				ui.doubleSpinBox_cur_p4->setValue(current_position[4]);
				ui.doubleSpinBox_cur_p5->setValue(current_position[5]);

				for (int i = 0; i < robot.number_of_servos; i++) {
					robot.desired_pos[i] = robot.current_pos[i];
				}

			} else {
				// Wygaszanie elementow przy niezsynchronizowanym robocie
				//ui.pushButton_execute->setDisabled(true);
			}
		}

	} // end try
	CATCH_SECTION_UI

	return 1;
}
int wgt_spkm_ext::init()
{

	try {

		if (robot.state.edp.pid != -1) {
			if (robot.state.edp.is_synchronised) // Czy robot jest zsynchronizowany?
			{
				//ui.pushButton_execute->setDisabled(false);

				robot.ui_ecp_robot->the_robot->epos_external_reply_data_request_port.set_request();
				robot.ui_ecp_robot->execute_motion();
				robot.ui_ecp_robot->the_robot->epos_external_reply_data_request_port.get();

				for (int i = 0; i < 6; i++) {
					set_single_axis(i, doubleSpinBox_mcur_Vector[i], radioButton_mip_Vector[i]);
				}

				lib::epos::epos_reply &er = robot.ui_ecp_robot->the_robot->epos_external_reply_data_request_port.data;

				lib::Homog_matrix tmp_frame(er.current_frame);
				lib::Xyz_Angle_Axis_vector tmp_vector;
				double current_position[6];
				tmp_frame.get_xyz_angle_axis(tmp_vector);
				tmp_vector.to_table(current_position);

				for (int i = 0; i < 6; i++) {
					doubleSpinBox_cur_Vector[i]->setValue(current_position[i]);
					robot.desired_pos[i] = robot.current_pos[i];
				}

			} else {
				// Wygaszanie elementow przy niezsynchronizowanym robocie
				//ui.pushButton_execute->setDisabled(true);
			}
		}

	} // end try
	CATCH_SECTION_UI

	return 1;
}