remove index from delete c++ visual-studio-2008 opencv image-processing computer-vision

c++ - index - la aserción de depuración falló vc / include / vector iterator vector+offset fuera de rango en chamferMatching Opencv



std:: vector c++ delete (1)

Estoy atascado con el problema al implementar el programa de ajuste de chaflán en OpenCV

https: // code.ros.org/trac/opencv/browser/trunk/opencv/samples/cpp/chamfer.cpp?rev=4194

Lo siguiente es el código que está leyendo la imagen de la plantilla

y prueba de imagen

, Estoy usando VS 2008 y OpenCV2.4.6

#include "stdafx.h" #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/contrib/contrib.hpp> #include <iostream> using namespace cv; using namespace std; int main( int argc, char** argv ) { IplImage *src; src = cvLoadImage("C://Users//JOSHI//Desktop//Images//logo_in_clutter.png",1); Mat img=cvarrToMat(src); imshow("Mat",img); src = cvLoadImage("C://Users//JOSHI//Desktop//Images//logo.png",1); Mat tpl=cvarrToMat(src); imshow("Mat",tpl); Mat cimg; // if the image and the template are not edge maps but normal grayscale images, // you might want to uncomment the lines below to produce the maps. You can also // run Sobel instead of Canny. Canny(img, img, 5, 50, 3); Canny(tpl, tpl, 5, 50, 3); vector<vector<Point> > results; vector<float> costs; int best = chamerMatching( img, tpl, results, costs ); if( best < 0 ) { cout << "not found;/n"; return 0; } size_t i, n = results[best].size(); for( i = 0; i < n; i++ ) { Point pt = results[best][i]; if( pt.inside(Rect(0, 0, cimg.cols, cimg.rows)) ) cimg.at<Vec3b>(pt) = Vec3b(0, 255, 0); } imshow("result", cimg); waitKey(); return 0; }

esta es la imagen de error

¿Puede sugerirme por qué estoy recibiendo este error ya que soy nuevo en OpenCV y procesamiento de imágenes?


Tuve el mismo problema Solución: http://code.opencv.org/issues/3603 . Necesita descargar opencv de la fuente, abrir la línea chamfermatching.cpp y comentar:

~Matching() { for (size_t i = 0; i<templates.size(); i++) { //delete templates[i]; } }

Entonces necesitas reconstruir opencv. Después de esto, debería funcionar.