2014-04-10 01:39:37 -0600 | received badge | ● Editor (source) |
2014-04-10 01:33:36 -0600 | asked a question | segmentation fault in image processing using SURF I am getting a segmentation fault after the loop runs for sometime. I want the loop to run as an infinite loop. Why is the error occurring? int main( int argc, char** argv ) { cv::VideoCapture cap("tcp://192.168.1.1:5555"); // open a video file if(!cap.isOpened()) // check if succeeded { std::cout << " not found or could not be opened" << std::endl; printf("4\n"); return -1; } unsigned long counter =0; cv::Mat frame; // read frames until end of video: struct timeval start,end; long seconds,useconds; long mtime=0; gettimeofday(&start,NULL); cap >> frame; imwrite("image.pgm",frame); Mat img_1 = imread( "image.pgm" ); int minHessian = 500; SurfFeatureDetector detector( minHessian,1,2,false,true ); detector.detect( img_1, keypoints_1p ); SurfDescriptorExtractor extractor(minHessian,1,1,1,0); Mat descriptors1, descriptors2; extractor.compute(img_1, keypoints_1p, descriptors1); while(cap.read(frame)) { //-- Step 1: Detect the keypoints using SURF Detector detector.detect( img_2, keypoints_2p); // computing descriptors Mat a(descriptors1.rows,descriptors1.cols,descriptors1.type()); Mat b(descriptors2.rows,descriptors2.cols, descriptors2.type()); a=descriptors1; b=descriptors2; Mat m(descriptors1.rows,2,CV_16U); if(((descriptors2.rows)||(descriptors1.rows))==0) { m.push_back(0); return 0; } Mat des2t(descriptors2.rows,descriptors2.cols,descriptors2.type()); des2t= b.t(); m= Mat::zeros(descriptors1.rows,1,CV_32F); Mat dotprod = (descriptors1*des2t); Mat angle(dotprod.rows,dotprod.cols,dotprod.type()); for(int k=0;k<dotprod.rows;k++) {="" for(int="" l="0;l<dotprod.cols;l++)" {<="" p=""> } int jmin,jmin2; float minangle,min2; for(i=0;i< dotprod.rows;i++) { minangle=angle.at<float>(i,0); jmin=1; min2=angle.at<float>(i,0); jmin2=1; for(j=1;j<dotprod.rows;j++) {<="" p=""> } vector <point2f> im1; vector <point2f> im2; for(int z=0;z<= descriptors2.rows;z++) { for(int y=0;y<=descriptors2.cols;y++) { } } for( int z=0;z<= descriptors1.rows;z++) { for( int y=0;y<=descriptors1.cols;y++) { } } //calculate the dx and dy for all features int v; vector <float> dx,dy ... (more) |