123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- /*M///////////////////////////////////////////////////////////////////////////////////////
- //
- // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
- //
- // By downloading, copying, installing or using the software you agree to this license.
- // If you do not agree to this license, do not download, install,
- // copy or use the software.
- //
- //
- // Intel License Agreement
- // For Open Source Computer Vision Library
- //
- // Copyright (C) 2000, Intel Corporation, all rights reserved.
- // Third party copyrights are property of their respective owners.
- //
- // Redistribution and use in source and binary forms, with or without modification,
- // are permitted provided that the following conditions are met:
- //
- // * Redistribution's of source code must retain the above copyright notice,
- // this list of conditions and the following disclaimer.
- //
- // * Redistribution's in binary form must reproduce the above copyright notice,
- // this list of conditions and the following disclaimer in the documentation
- // and/or other materials provided with the distribution.
- //
- // * The name of Intel Corporation may not be used to endorse or promote products
- // derived from this software without specific prior written permission.
- //
- // This software is provided by the copyright holders and contributors "as is" and
- // any express or implied warranties, including, but not limited to, the implied
- // warranties of merchantability and fitness for a particular purpose are disclaimed.
- // In no event shall the Intel Corporation or contributors be liable for any direct,
- // indirect, incidental, special, exemplary, or consequential damages
- // (including, but not limited to, procurement of substitute goods or services;
- // loss of use, data, or profits; or business interruption) however caused
- // and on any theory of liability, whether in contract, strict liability,
- // or tort (including negligence or otherwise) arising in any way out of
- // the use of this software, even if advised of the possibility of such damage.
- //
- //M*/
- /*
- * createsamples.cpp
- *
- * Create test/training samples
- */
- #include "opencv2/core.hpp"
- #include "utility.hpp"
- #include <cstdio>
- #include <cstring>
- #include <cstdlib>
- #include <cmath>
- using namespace std;
- int main( int argc, char* argv[] )
- {
- int i = 0;
- char* nullname = (char*)"(NULL)";
- char* vecname = NULL; /* .vec file name */
- char* infoname = NULL; /* file name with marked up image descriptions */
- char* imagename = NULL; /* single sample image */
- char* bgfilename = NULL; /* background */
- int num = 1000;
- int bgcolor = 0;
- int bgthreshold = 80;
- int invert = 0;
- int maxintensitydev = 40;
- double maxxangle = 1.1;
- double maxyangle = 1.1;
- double maxzangle = 0.5;
- int showsamples = 0;
- /* the samples are adjusted to this scale in the sample preview window */
- double scale = 4.0;
- int width = 24;
- int height = 24;
- double maxscale = -1.0;
- int rngseed = 12345;
- if( argc == 1 )
- {
- printf( "Usage: %s\n [-info <collection_file_name>]\n"
- " [-img <image_file_name>]\n"
- " [-vec <vec_file_name>]\n"
- " [-bg <background_file_name>]\n [-num <number_of_samples = %d>]\n"
- " [-bgcolor <background_color = %d>]\n"
- " [-inv] [-randinv] [-bgthresh <background_color_threshold = %d>]\n"
- " [-maxidev <max_intensity_deviation = %d>]\n"
- " [-maxxangle <max_x_rotation_angle = %f>]\n"
- " [-maxyangle <max_y_rotation_angle = %f>]\n"
- " [-maxzangle <max_z_rotation_angle = %f>]\n"
- " [-show [<scale = %f>]]\n"
- " [-w <sample_width = %d>]\n [-h <sample_height = %d>]\n"
- " [-maxscale <max sample scale = %f>]\n"
- " [-rngseed <rng seed = %d>]\n",
- argv[0], num, bgcolor, bgthreshold, maxintensitydev,
- maxxangle, maxyangle, maxzangle, scale, width, height, maxscale, rngseed );
- return 0;
- }
- for( i = 1; i < argc; ++i )
- {
- if( !strcmp( argv[i], "-info" ) )
- {
- infoname = argv[++i];
- }
- else if( !strcmp( argv[i], "-img" ) )
- {
- imagename = argv[++i];
- }
- else if( !strcmp( argv[i], "-vec" ) )
- {
- vecname = argv[++i];
- }
- else if( !strcmp( argv[i], "-bg" ) )
- {
- bgfilename = argv[++i];
- }
- else if( !strcmp( argv[i], "-num" ) )
- {
- num = atoi( argv[++i] );
- }
- else if( !strcmp( argv[i], "-bgcolor" ) )
- {
- bgcolor = atoi( argv[++i] );
- }
- else if( !strcmp( argv[i], "-bgthresh" ) )
- {
- bgthreshold = atoi( argv[++i] );
- }
- else if( !strcmp( argv[i], "-inv" ) )
- {
- invert = 1;
- }
- else if( !strcmp( argv[i], "-randinv" ) )
- {
- invert = CV_RANDOM_INVERT;
- }
- else if( !strcmp( argv[i], "-maxidev" ) )
- {
- maxintensitydev = atoi( argv[++i] );
- }
- else if( !strcmp( argv[i], "-maxxangle" ) )
- {
- maxxangle = atof( argv[++i] );
- }
- else if( !strcmp( argv[i], "-maxyangle" ) )
- {
- maxyangle = atof( argv[++i] );
- }
- else if( !strcmp( argv[i], "-maxzangle" ) )
- {
- maxzangle = atof( argv[++i] );
- }
- else if( !strcmp( argv[i], "-show" ) )
- {
- showsamples = 1;
- if( i+1 < argc && strlen( argv[i+1] ) > 0 && argv[i+1][0] != '-' )
- {
- double d;
- d = strtod( argv[i+1], 0 );
- if( d != -HUGE_VAL && d != HUGE_VAL && d > 0 ) scale = d;
- ++i;
- }
- }
- else if( !strcmp( argv[i], "-w" ) )
- {
- width = atoi( argv[++i] );
- }
- else if( !strcmp( argv[i], "-h" ) )
- {
- height = atoi( argv[++i] );
- }
- else if( !strcmp( argv[i], "-maxscale" ) )
- {
- maxscale = atof( argv[++i] );
- }
- else if (!strcmp(argv[i], "-rngseed"))
- {
- rngseed = atoi(argv[++i]);
- }
- }
- cv::setRNGSeed( rngseed );
- printf( "Info file name: %s\n", ((infoname == NULL) ? nullname : infoname ) );
- printf( "Img file name: %s\n", ((imagename == NULL) ? nullname : imagename ) );
- printf( "Vec file name: %s\n", ((vecname == NULL) ? nullname : vecname ) );
- printf( "BG file name: %s\n", ((bgfilename == NULL) ? nullname : bgfilename ) );
- printf( "Num: %d\n", num );
- printf( "BG color: %d\n", bgcolor );
- printf( "BG threshold: %d\n", bgthreshold );
- printf( "Invert: %s\n", (invert == CV_RANDOM_INVERT) ? "RANDOM"
- : ( (invert) ? "TRUE" : "FALSE" ) );
- printf( "Max intensity deviation: %d\n", maxintensitydev );
- printf( "Max x angle: %g\n", maxxangle );
- printf( "Max y angle: %g\n", maxyangle );
- printf( "Max z angle: %g\n", maxzangle );
- printf( "Show samples: %s\n", (showsamples) ? "TRUE" : "FALSE" );
- if( showsamples )
- {
- printf( "Scale: %g\n", scale );
- }
- printf( "Width: %d\n", width );
- printf( "Height: %d\n", height );
- printf( "Max Scale: %g\n", maxscale );
- printf( "RNG Seed: %d\n", rngseed );
- /* determine action */
- if( imagename && vecname )
- {
- printf( "Create training samples from single image applying distortions...\n" );
- cvCreateTrainingSamples( vecname, imagename, bgcolor, bgthreshold, bgfilename,
- num, invert, maxintensitydev,
- maxxangle, maxyangle, maxzangle,
- showsamples, width, height );
- printf( "Done\n" );
- }
- else if( imagename && bgfilename && infoname )
- {
- printf( "Create test samples from single image applying distortions...\n" );
- cvCreateTestSamples( infoname, imagename, bgcolor, bgthreshold, bgfilename, num,
- invert, maxintensitydev,
- maxxangle, maxyangle, maxzangle, showsamples, width, height, maxscale);
- printf( "Done\n" );
- }
- else if( infoname && vecname )
- {
- int total;
- printf( "Create training samples from images collection...\n" );
- total = cvCreateTrainingSamplesFromInfo( infoname, vecname, num, showsamples,
- width, height );
- printf( "Done. Created %d samples\n", total );
- }
- else if( vecname )
- {
- printf( "View samples from vec file (press ESC to exit)...\n" );
- cvShowVecSamples( vecname, width, height, scale );
- printf( "Done\n" );
- }
- else
- {
- printf( "Nothing to do\n" );
- }
- return 0;
- }
|