25 #include <fvutils/color/colorspaces.h> 26 #include <fvutils/readers/jpeg.h> 27 #include <fvutils/readers/png.h> 28 #include <filters/roidraw.h> 31 #include <classifiers/sift.h> 33 #include <opencv/cv.h> 34 #include <opencv/cxcore.h> 35 #include <opencv/highgui.h> 40 main(
int argc,
char **argv)
43 printf(
"Usage: %s <object-image-file.png> <scene-image-file.png>\n", argv[0]);
47 const char *object_file = argv[1];
48 const char *scene_file = argv[2];
51 printf(
"QASiftClassifier: creating cvImages for object and scene\n");
52 IplImage * obj_img = cvLoadImage( object_file, 1 );
53 IplImage * scn_img = cvLoadImage( scene_file, 1 );
57 printf(
"QASiftClassifier: Load scene as image\n");
59 PNGReader *reader =
new PNGReader(scene_file);
60 unsigned char *buffer = malloc_buffer(YUV422_PLANAR,
61 reader->pixel_width(), reader->pixel_height());
63 reader->set_buffer(buffer);
66 printf(
"QASiftClassifier: Instantiate SiftClassifier\n");
67 SiftClassifier *classifier =
new SiftClassifier(object_file,
68 reader->pixel_width(), reader->pixel_height());
70 classifier->set_src_buffer(buffer, reader->pixel_width(), reader->pixel_height());
72 printf(
"QASiftClassifier: classify ...\n");
73 std::list< ROI > *rois = classifier->classify();
75 printf(
"QASiftClassifier: filterROI\n");
76 FilterROIDraw *roi_draw =
new FilterROIDraw();
77 for (std::list< ROI >::iterator i = rois->begin(); i != rois->end(); ++i) {
78 printf(
"ROI: start (%u, %u) extent %u x %u\n",
79 (*i).start.x, (*i).start.y, (*i).width, (*i).height);
81 roi_draw->set_dst_buffer(buffer, &(*i));
85 printf(
"QASiftClassifier: draw ROIs in cvWindow\n");
86 for (std::list< ROI >::iterator i = rois->begin(); i != rois->end(); ++i) {
87 if( (*i).height == 11 && (*i).width == 11 ) {
89 cvPoint((*i).start.x, (*i).start.y),
90 cvPoint((*i).start.x+(*i).width, (*i).start.y+(*i).height),
97 cvPoint((*i).start.x, (*i).start.y),
98 cvPoint((*i).start.x+(*i).width, (*i).start.y+(*i).height),
106 cvNamedWindow(
"Scene-Matches", 1 );
107 cvShowImage(
"Scene-Matches", scn_img );
108 cvNamedWindow(
"Object", 1 );
109 cvShowImage(
"Object", obj_img );