int main() #endif { unsigned char *img1, *img2; KLT_TrackingContext tc; KLT_FeatureList fl; int nFeatures = 100; int ncols, nrows; tc = KLTCreateTrackingContext(); fl = KLTCreateFeatureList(nFeatures); img1 = pgmReadFile("img0.pgm", NULL, &ncols, &nrows); img2 = pgmReadFile("img1.pgm", NULL, &ncols, &nrows); KLTSelectGoodFeatures(tc, img1, ncols, nrows, fl); KLTWriteFeatureListToPPM(fl, img1, ncols, nrows, "feat1.ppm"); KLTWriteFeatureList(fl, "feat1.txt", "%3d"); KLTTrackFeatures(tc, img1, img2, ncols, nrows, fl); KLTReplaceLostFeatures(tc, img2, ncols, nrows, fl); KLTWriteFeatureListToPPM(fl, img2, ncols, nrows, "feat2.ppm"); KLTWriteFeatureList(fl, "feat2.txt", "%3d"); return 0; }
int main() #endif { unsigned char *img1, *img2; char fnamein[100], fnameout[100]; KLT_TrackingContext tc; KLT_FeatureList fl; KLT_FeatureTable ft; int nFeatures = 150, nFrames = 10; int ncols, nrows; int i; tc = KLTCreateTrackingContext(); fl = KLTCreateFeatureList(nFeatures); ft = KLTCreateFeatureTable(nFrames, nFeatures); tc->sequentialMode = TRUE; tc->writeInternalImages = FALSE; tc->affineConsistencyCheck = -1; /* set this to 2 to turn on affine consistency check */ img1 = pgmReadFile("img0.pgm", NULL, &ncols, &nrows); img2 = (unsigned char *) malloc(ncols*nrows*sizeof(unsigned char)); KLTSelectGoodFeatures(tc, img1, ncols, nrows, fl); KLTStoreFeatureList(fl, ft, 0); KLTWriteFeatureListToPPM(fl, img1, ncols, nrows, "feat0.ppm"); for (i = 1 ; i < nFrames ; i++) { sprintf(fnamein, "img%d.pgm", i); pgmReadFile(fnamein, img2, &ncols, &nrows); KLTTrackFeatures(tc, img1, img2, ncols, nrows, fl); #ifdef REPLACE KLTReplaceLostFeatures(tc, img2, ncols, nrows, fl); #endif KLTStoreFeatureList(fl, ft, i); sprintf(fnameout, "feat%d.ppm", i); KLTWriteFeatureListToPPM(fl, img2, ncols, nrows, fnameout); } KLTWriteFeatureTable(ft, "features.txt", "%5.1f"); KLTWriteFeatureTable(ft, "features.ft", NULL); KLTFreeFeatureTable(ft); KLTFreeFeatureList(fl); KLTFreeTrackingContext(tc); free(img1); free(img2); return 0; }
void main() { unsigned char *img1, *img2; KLT_TrackingContext tc; KLT_FeatureList fl; int nFeatures = 100; int ncols, nrows; int i; tc = KLTCreateTrackingContext(); KLTPrintTrackingContext(tc); fl = KLTCreateFeatureList(nFeatures); img1 = pgmReadFile("img0.pgm", NULL, &ncols, &nrows); img2 = pgmReadFile("img1.pgm", NULL, &ncols, &nrows); KLTSelectGoodFeatures(tc, img1, ncols, nrows, fl); printf("\nIn first image:\n"); for (i = 0 ; i < fl->nFeatures ; i++) { printf("Feature #%d: (%f,%f) with value of %d\n", i, fl->feature[i]->x, fl->feature[i]->y, fl->feature[i]->val); } KLTWriteFeatureListToPPM(fl, img1, ncols, nrows, "feat1.ppm"); KLTWriteFeatureList(fl, "feat1.txt", "%3d"); KLTTrackFeatures(tc, img1, img2, ncols, nrows, fl); printf("\nIn second image:\n"); for (i = 0 ; i < fl->nFeatures ; i++) { printf("Feature #%d: (%f,%f) with value of %d\n", i, fl->feature[i]->x, fl->feature[i]->y, fl->feature[i]->val); } KLTWriteFeatureListToPPM(fl, img2, ncols, nrows, "feat2.ppm"); KLTWriteFeatureList(fl, "feat2.fl", NULL); /* binary file */ KLTWriteFeatureList(fl, "feat2.txt", "%5.1f"); /* text file */ }
int main( int argc, const char* argv[] ) { unsigned char *img1, *img2; KLT_TrackingContext tc; KLT_FeatureList fl; //KLT_FeatureTable ft; int ncols, nrows; int i, j; FILE *fp; int nFeatures = 430; int sFrame = 0; int eFrame = 0; char *fmt = "%d"; char *base; char fname[1024]; char ffmt[1024]; if( argc == 1 ) { printf( "Usage: %s <basename_of_pgm_files>" " [-fmt <pgm_sequence_format = %s>]" " [-ef <index_of_end_frame = %d>]" " [-np <#_of_tracking_points = %d>]" " [-sf <index_of_start_frame = %d>]\n" "Ex) %s ../hotel/hotel.seq -fmt %%d -ef 100 -np 430 -sf 0\n" "Ex) %s ../castle/castle. -fmt %%03d -ef 27 -np 110 -sf 0\n" "Ex) %s ../medusa/medusa -fmt %%03d -sf 110 -ef 180 -np 830\n", argv[0], fmt, eFrame, nFeatures, sFrame, argv[0], argv[0], argv[0] ); return 0; } for( i = 1; i < argc; ++i ) { if( !strcmp( argv[i], "-sf" ) ) { sFrame = atoi( argv[++i] ); } else if( !strcmp( argv[i], "-ef" ) ) { eFrame = atoi( argv[++i] ); } else if( !strcmp( argv[i], "-np" ) ) { nFeatures = atoi( argv[++i] ); } else if( !strcmp( argv[i], "-fmt" ) ) { fmt = (char *)argv[++i]; } else { base = (char *)argv[i]; } } sprintf(ffmt, "%%s%s%%s\0", fmt); tc = KLTCreateTrackingContext(); tc->mindist = 15; // See klt.c for default values tc->window_width = 50; tc->window_height = 50; tc->max_residue = 30; tc->min_determinant = 0.001; //tc->min_eigenvalue = 3; //tc->borderx = 50; //tc->bordery = 50; //tc->affine_window_width = 51; //tc->affine_window_height = 51; KLTChangeTCPyramid(tc, 15); KLTUpdateTCBorder(tc); KLTPrintTrackingContext(tc); fl = KLTCreateFeatureList(nFeatures); //ft = KLTCreateFeatureTable(nFrames, nFeatures); tc->sequentialMode = TRUE; tc->writeInternalImages = FALSE; tc->affineConsistencyCheck = -1; /* set this to 2 to turn on affine consistency check */ i = sFrame; sprintf(fname, ffmt, base, i, ".pgm"); img1 = pgmReadFile(fname, NULL, &ncols, &nrows); KLTSelectGoodFeatures(tc, img1, ncols, nrows, fl); // write sprintf(fname, ffmt, base, i, ".feat.ppm"); /* ppm file */ KLTWriteFeatureListToPPM(fl, img1, ncols, nrows, fname); //sprintf(fname, ffmt, base, i, ".feat.fl"); /* binary file */ //KLTWriteFeatureList(fl, fname, NULL); sprintf(fname, ffmt, base, i, ".feat.txt"); /* text file */ //KLTWriteFeatureList(fl, fname, "%5.1f"); MyKLTWriteFeatureList(fl, fname); for (i = sFrame+1; i <= eFrame; i++) { sprintf(fname, ffmt, base, i, ".pgm"); img2 = pgmReadFile(fname, NULL, &ncols, &nrows); KLTTrackFeatures(tc, img1, img2, ncols, nrows, fl); #ifdef REPLACE KLTReplaceLostFeatures(tc, img2, ncols, nrows, fl); #endif // write sprintf(fname, ffmt, base, i, ".feat.ppm"); /* ppm file */ KLTWriteFeatureListToPPM(fl, img1, ncols, nrows, fname); //sprintf(fname, ffmt, base, i, ".feat.fl"); /* binary file */ //KLTWriteFeatureList(fl, fname, NULL); sprintf(fname, ffmt, base, i, ".feat.txt"); /* text file */ //KLTWriteFeatureList(fl, fname, "%5.1f"); MyKLTWriteFeatureList(fl, fname); img1 = img2; } sprintf(fname, ffmt, base, eFrame, ".feat.ppm"); KLTWriteFeatureListToPPM(fl, img1, ncols, nrows, fname); //KLTFreeFeatureTable(ft); KLTFreeFeatureList(fl); KLTFreeTrackingContext(tc); free(img1); //free(img2); return 0; }
int main(int argc, char ** argv) { //Timer appTimer; //initTimer(&appTimer, "APP Time"); unsigned char *img1, *img2; char fnamein[100], fnameout[100]; KLT_TrackingContext tc; KLT_FeatureList fl; KLT_FeatureTable ft; int nFeatures; int nFrames; int ncols, nrows; int i; if(argc == 3) { nFeatures = atoi(argv[1]); nFrames = atoi(argv[2]); } else { nFeatures = 512; nFrames = 10; } tc = KLTCreateTrackingContext(); fl = KLTCreateFeatureList(nFeatures); ft = KLTCreateFeatureTable(nFrames, nFeatures); tc->sequentialMode = TRUE; tc->writeInternalImages = FALSE; tc->affineConsistencyCheck = -1; /* set this to 2 to turn on affine consistency check */ //startTimer(&appTimer); img1 = pgmReadFile("img0.pgm", NULL, &ncols, &nrows); img2 = (unsigned char *) malloc(ncols*nrows*sizeof(unsigned char)); KLTSelectGoodFeatures(tc, img1, ncols, nrows, fl); KLTStoreFeatureList(fl, ft, 0); KLTWriteFeatureListToPPM(fl, img1, ncols, nrows, "feat0.ppm"); for (i = 1 ; i < nFrames ; i++) { sprintf(fnamein, "img%d.pgm", i); pgmReadFile(fnamein, img2, &ncols, &nrows); KLTTrackFeatures(tc, img1, img2, ncols, nrows, fl); #ifdef REPLACE KLTReplaceLostFeatures(tc, img2, ncols, nrows, fl); #endif KLTStoreFeatureList(fl, ft, i); sprintf(fnameout, "feat%d.ppm", i); KLTWriteFeatureListToPPM(fl, img2, ncols, nrows, fnameout); } //stopTimer(&appTimer); //printTime(appTimer); //printf("Frames per second = %4.2f\n", nFrames / getTime(appTimer) *1000 ); KLTWriteFeatureTable(ft, "features.txt", "%5.1f"); KLTWriteFeatureTable(ft, "features.ft", NULL); KLTFreeFeatureTable(ft); KLTFreeFeatureList(fl); KLTFreeTrackingContext(tc); free(img1); free(img2); return 0; }
//------------------------------------------------------------------- void klt_tracker_t::log_status() const { char* ppmname; sprintf(ppmname, "tracking_img_%.4d.ppm",count_); KLTWriteFeatureListToPPM(fl_, img_pre_, ncols_, nrows_, ppmname); }
/** ============================================================================ * @func pool_notify_Execute * * @desc This function implements the execute phase for this application. * * @modif None * ============================================================================ */ NORMAL_API DSP_STATUS pool_notify_Execute (IN Uint32 numIterations, Uint8 processorId, IN Char8 * strFeatures, IN Char8 * strFrames) { DSP_STATUS status = DSP_SOK ; long long start; // Variables for klt unsigned char *img1, *img2; char fnamein[100], fnameout[100]; KLT_TrackingContext tc; KLT_FeatureList fl; KLT_FeatureTable ft; int ncols, nrows; int i; int nFeatures; int nFrames; #if defined(DSP) unsigned char *buf_dsp; #endif #ifdef DEBUG printf ("Entered pool_notify_Execute ()\n") ; #endif nFeatures = atoi(strFeatures); nFrames = atoi(strFrames); unit_init(); start = get_usec(); tc = KLTCreateTrackingContext(); fl = KLTCreateFeatureList(nFeatures); ft = KLTCreateFeatureTable(nFrames, nFeatures); tc->sequentialMode = TRUE; tc->writeInternalImages = FALSE; tc->affineConsistencyCheck = -1; /* set this to 2 to turn on affine consistency check */ //startTimer(&appTimer); img1 = pgmReadFile("img0.pgm", NULL, &ncols, &nrows); img2 = (unsigned char *) malloc(ncols*nrows*sizeof(unsigned char)); KLTSelectGoodFeatures(tc, img1, ncols, nrows, fl); KLTStoreFeatureList(fl, ft, 0); KLTWriteFeatureListToPPM(fl, img1, ncols, nrows, "feat0.ppm"); for (i = 1 ; i < nFrames ; i++) { sprintf(fnamein, "img%d.pgm", i); pgmReadFile(fnamein, img2, &ncols, &nrows); KLTTrackFeatures(tc, img1, img2, ncols, nrows, fl); #ifdef REPLACE KLTReplaceLostFeatures(tc, img2, ncols, nrows, fl); #endif KLTStoreFeatureList(fl, ft, i); sprintf(fnameout, "feat%d.ppm", i); KLTWriteFeatureListToPPM(fl, img2, ncols, nrows, fnameout); } //stopTimer(&appTimer); //printTime(appTimer); //printf("Frames per second = %4.2f\n", nFrames / getTime(appTimer) *1000 ); KLTWriteFeatureTable(ft, "features.txt", "%5.1f"); KLTWriteFeatureTable(ft, "features.ft", NULL); KLTFreeFeatureTable(ft); KLTFreeFeatureList(fl); KLTFreeTrackingContext(tc); free(img1); free(img2); #if !defined(DSP) printf(" Result is %d \n", sum_dsp(pool_notify_DataBuf,pool_notify_BufferSize)); #endif #if defined(DSP) POOL_writeback (POOL_makePoolId(processorId, SAMPLE_POOL_ID), pool_notify_DataBuf, pool_notify_BufferSize); POOL_translateAddr ( POOL_makePoolId(processorId, SAMPLE_POOL_ID), (void*)&buf_dsp, AddrType_Dsp, (Void *) pool_notify_DataBuf, AddrType_Usr) ; NOTIFY_notify (processorId,pool_notify_IPS_ID,pool_notify_IPS_EVENTNO,1); sem_wait(&sem); #endif printf("Sum execution time %lld us.\n", get_usec()-start); return status ; }