Пример #1
0
int main ( int argc, char** argv )
{
	validExtensions.push_back("jpg");
	validExtensions.push_back("ppm");
	validExtensions.push_back("png");

	plateSize = cv::Size( plate_width, plate_height );
	hog.winSize = cv::Size(64, 128);

	if( argc >= 2 )
	{
		for(int i = 1; i < argc; i++ )
		{
			std::string opt = std::string(argv[i]);
			if( opt == "-v" )
			{
				trainValidator( std::string(argv[i+1]), std::string(argv[i+2]), std::string(argv[i+3]) );
				break;
			}
			if( opt == "-c" )
			{
				std::vector< std::string > classesPaths;
				for( int n = i+2; n < argc; n++ )
				{
					classesPaths.push_back(std::string(argv[n]));
				}
				trainClassifier( std::string(argv[i+1]), classesPaths );
				break;
			}
		}
	}
	else
	{
		std::cout <<
				"Usage:\n" << argv[0] <<
				"To train a validator:" << std::endl <<
						"\t -v <path to positive objects images> <path to negative objects images> <path for output files> \n" <<
				"To train a classifier:" << std::endl <<
						"\t -c <path for output files> <path to class 0 images> <path to class 1 images> ... <path to class n images> \n";

	}

	return 0;
}
Пример #2
0
int main(int argc, char **argv)
{
  float train_data[train_size][data_dimension] = {
    {0.1,0.2},
    {0.3,0.1},
    {3.1,3.2},
    {3.3,4.1},
    {5.1,5.2}
  };
  std::string train_data_targets[train_size] = {"1","1","2","2","3"};

  float test_data[test_size][data_dimension] = {
    {0.0,0.0},
    {5.5,5.5},
    {2.9,3.6}
  };

  std::vector<classifiers_test::ClassDataPoint> train_points;
  std::vector<classifiers_test::ClassDataPoint> test_points;

  printf("train:\n");
  for (int i = 0; i < train_size; i++)
  {
    classifiers_test::ClassDataPoint *dp = new classifiers_test::ClassDataPoint();
    for (int j = 0; j < data_dimension; j++)
    {
      dp->point.insert(dp->point.end(), train_data[i][j]);
      printf("%f ", train_data[i][j]);
    }
    printf("\n");
    dp->target_class = train_data_targets[i];
    train_points.insert(train_points.end(), *dp);
  }

  printf("test: \n");
  for (int i = 0; i < test_size; i++)
  {
    classifiers_test::ClassDataPoint *dp = new classifiers_test::ClassDataPoint();
    for (int j = 0; j < data_dimension; j++)
    {
      dp->point.insert(dp->point.end(), test_data[i][j]);
      printf("%f ", test_data[i][j]);
    }
    printf("\n");
    dp->target_class = "";
    test_points.insert(test_points.end(), *dp);
  }

  ros::init(argc, argv, "classifiers_test");

  ros::NodeHandle n;

  ros::service::waitForService("/ml_classifiers/create_classifier");

  if (!createClassifier(n, "testc","ml_classifiers/SVMClassifier"))
      return 1;
  
  if (!addClassDataPoints(n, "testc", train_points))
    return 1;

  if (!trainClassifier(n, "testc"))
    return 1;

  if (!classifyPoints(n, "testc", test_points))
    return 1;
  
  return 0;
}