Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Zodiak98 en 3 Marzo 2017, 05:05 am



Título: OpenCV - System.Runtime.InteropServices.SEHException Visual C++ Exception CLR Pr
Publicado por: Zodiak98 en 3 Marzo 2017, 05:05 am
Este problema me ha estado comiendo la cabeza todo el día.

La función que tengo es:
Código
  1. private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
  2.        std::vector<Mat> images;
  3.        std::vector<int> labels;
  4.  
  5.        std::vector<cv::String> filenames;
  6.        glob("Dataface/*.jpg", filenames, false);
  7.  
  8.        if (filenames.size() == (size_t)0) {
  9.            MessageBox::Show("La carpeta está vacía.", "Error", MessageBoxButtons::OK, MessageBoxIcon::Error);
  10.            return;
  11.        }
  12.  
  13.        for (size_t i = 0; i < filenames.size(); i++) {
  14.            images.push_back(imread(filenames[i]));
  15.            labels.push_back((int)i);
  16.        }
  17.  
  18.        Ptr<FaceRecognizer> model = createEigenFaceRecognizer();
  19.  
  20.        model->train(images, labels);
  21.  
  22.        Mat img = imread("C:\\Users\\Germán Aguilera\\Desktop\\Christina.jpg");
  23.  
  24.        int prediction = model->predict(img);
  25.  
  26.        //MessageBox::Show(prediction.ToString());
  27.  
  28.        //rModel = &model;
  29.  
  30.        MessageBox::Show("El programa ya ha sido entrenado.", "Reconocimiento facial", MessageBoxButtons::OK, MessageBoxIcon::Information);
  31.    }
  32.  

La línea que me está arrojando la excepción es:
Código
  1. int prediction = model->predict(img);
  2.  

¿Pero por qué sucede eso?
No tuve ningún problema con:
Código
  1. model->train(images, labels);
  2.  

Quería chequear los resultados del predict, así que copié y pegué en otra carpeta una imagen ya procesada para usarla en el predict, y me arroja esa excepción.

¿Alguien podría echarme una mano?

Gracias de antemano. :)