Opencv Surf Bug error -


anyone familiar error? tested surf descriptor in real-time , worked after few seconds crashes , got error.enter image description here enter image description here

it related when no points detected. run code again , have detected object stays more 2 mins , still no error. when removed object , there no points, crashes again after 40 secs.

#include <stdio.h> #include <iostream> #include <fstream> #include <string> #include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/nonfree/features2d.hpp" #include "opencv2/legacy/legacy.hpp"  using namespace cv; using namespace std;  char key = 'a'; int framecount = 0;  surffeaturedetector detector(1000); surfdescriptorextractor extractor; flannbasedmatcher matcher;  mat frame, des_object, image; mat des_image, img_matches, h;  std::vector<keypoint> kp_object; std::vector<point2f> obj_corners(4); std::vector<keypoint> kp_image; std::vector<vector<dmatch > > matches; std::vector<dmatch > good_matches; std::vector<point2f> obj; std::vector<point2f> scene; std::vector<point2f> scene_corners(4);  int main() {                          //reference image     mat object = imread("d:/milo.jpg", cv_load_image_grayscale );      if( !object.data )     {     std::cout<< "error reading object " << std::endl;     return -1;     }              //compute detectors , descriptors of reference image detector.detect( object, kp_object ); extractor.compute( object, kp_object, des_object );              //create video capture object cvcapture* capture = cvcapturefromcam(0); cvsetcaptureproperty(capture, cv_cap_prop_frame_width, 270); cvsetcaptureproperty(capture, cv_cap_prop_frame_height, 190);  //get corners object obj_corners[0] = cvpoint(0,0); obj_corners[1] = cvpoint( object.cols, 0 ); obj_corners[2] = cvpoint( object.cols, object.rows ); obj_corners[3] = cvpoint( 0, object.rows );              //wile loop real time detection while (key != 27) {     mat frame;     frame = cvqueryframe(capture);      if (framecount < 5)     {         framecount++;         continue;     }      mat des_image, img_matches;     std::vector<keypoint> kp_image;     std::vector<vector<dmatch > > matches;     std::vector<dmatch > good_matches;     std::vector<point2f> obj;     std::vector<point2f> scene;     std::vector<point2f> scene_corners(4);     mat h;     mat image;      cvtcolor(frame, image, cv_rgb2gray);      detector.detect( image, kp_image );     extractor.compute( image, kp_image, des_image );      matcher.knnmatch(des_object, des_image, matches, 2);       int goodmatchescounter =0;     for(int = 0; < min(des_image.rows-1,(int) matches.size()); i++) //this loop     sensitive segfaults     {         if(((int)matches[i].size()<=2 && (int)matches[i].size()>0) && (matches[i}            [0].distance<0.6*(matches[i][1].distance)))         {          //   good_matches.push_back(matches[i][0]);         obj.push_back( kp_object[ matches[i][0].queryidx ].pt );         scene.push_back( kp_image[ matches[i][0].trainidx ].pt );         goodmatchescounter++;         }     }      //draw "good" matches    // drawmatches( object, kp_object, image, kp_image, good_matches, img_matches,          scalar::all(-1), scalar::all(-1), vector<char>(),          drawmatchesflags::not_draw_single_points );       if (goodmatchescounter >= 4)     {          h = findhomography( obj, scene, cv_ransac );          perspectivetransform( obj_corners, scene_corners, h);          //draw lines between corners (the mapped object in scene image )         line( image, scene_corners[0], scene_corners[1], scalar( 0, 0, 0), 4 );         line( image, scene_corners[1], scene_corners[2], scalar( 0, 0, 0),                          4 );         line( image, scene_corners[2], scene_corners[3], scalar( 0, 0, 0),                          4 );         line( image, scene_corners[3], scene_corners[0], scalar( 0, 0, 0),                          4 );      }      //show detected matches     imshow( "good matches", image );     key = waitkey(1);    }     return 0;   } 


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -