25 #include <filters/roidraw.h>
26 #include <fvutils/color/colorspaces.h>
27 #include <fvutils/readers/jpeg.h>
28 #include <fvutils/readers/png.h>
31 #include <classifiers/sift.h>
32 #include <opencv/cv.h>
33 #include <opencv/cxcore.h>
34 #include <opencv/highgui.h>
39 main(
int argc,
char **argv)
42 printf(
"Usage: %s <object-image-file.png> <scene-image-file.png>\n", argv[0]);
46 const char *object_file = argv[1];
47 const char *scene_file = argv[2];
49 printf(
"QASiftClassifier: creating cvImages for object and scene\n");
50 IplImage *obj_img = cvLoadImage(object_file, 1);
51 IplImage *scn_img = cvLoadImage(scene_file, 1);
54 printf(
"QASiftClassifier: Load scene as image\n");
56 PNGReader * reader =
new PNGReader(scene_file);
57 unsigned char *buffer =
58 malloc_buffer(YUV422_PLANAR, reader->pixel_width(), reader->pixel_height());
60 reader->set_buffer(buffer);
63 printf(
"QASiftClassifier: Instantiate SiftClassifier\n");
64 SiftClassifier *classifier =
65 new SiftClassifier(object_file, reader->pixel_width(), reader->pixel_height());
67 classifier->set_src_buffer(buffer, reader->pixel_width(), reader->pixel_height());
69 printf(
"QASiftClassifier: classify ...\n");
70 std::list<ROI> *rois = classifier->classify();
72 printf(
"QASiftClassifier: filterROI\n");
73 FilterROIDraw *roi_draw =
new FilterROIDraw();
74 for (std::list<ROI>::iterator i = rois->begin(); i != rois->end(); ++i) {
76 "ROI: start (%u, %u) extent %u x %u\n", (*i).start.x, (*i).start.y, (*i).width, (*i).height);
78 roi_draw->set_dst_buffer(buffer, &(*i));
82 printf(
"QASiftClassifier: draw ROIs in cvWindow\n");
83 for (std::list<ROI>::iterator i = rois->begin(); i != rois->end(); ++i) {
84 if ((*i).height == 11 && (*i).width == 11) {
86 cvPoint((*i).start.x, (*i).start.y),
87 cvPoint((*i).start.x + (*i).width, (*i).start.y + (*i).height),
93 cvPoint((*i).start.x, (*i).start.y),
94 cvPoint((*i).start.x + (*i).width, (*i).start.y + (*i).height),
102 cvNamedWindow(
"Scene-Matches", 1);
103 cvShowImage(
"Scene-Matches", scn_img);
104 cvNamedWindow(
"Object", 1);
105 cvShowImage(
"Object", obj_img);