OpenCV - System.Runtime.InteropServices.SEHException Visual C++ Exception CLR Pr

Iniciado por Zodiak98, 3 Marzo 2017, 05:05 AM

0 Miembros y 1 Visitante están viendo este tema.

Zodiak98

Este problema me ha estado comiendo la cabeza todo el día.

La función que tengo es:
Código (cpp) [Seleccionar]

private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
        std::vector<Mat> images;
        std::vector<int> labels;

        std::vector<cv::String> filenames;
        glob("Dataface/*.jpg", filenames, false);

        if (filenames.size() == (size_t)0) {
            MessageBox::Show("La carpeta está vacía.", "Error", MessageBoxButtons::OK, MessageBoxIcon::Error);
            return;
        }

        for (size_t i = 0; i < filenames.size(); i++) {
            images.push_back(imread(filenames[i]));
            labels.push_back((int)i);
        }

        Ptr<FaceRecognizer> model = createEigenFaceRecognizer();

        model->train(images, labels);

        Mat img = imread("C:\\Users\\Germán Aguilera\\Desktop\\Christina.jpg");

        int prediction = model->predict(img);

        //MessageBox::Show(prediction.ToString());

        //rModel = &model;

        MessageBox::Show("El programa ya ha sido entrenado.", "Reconocimiento facial", MessageBoxButtons::OK, MessageBoxIcon::Information);
    }


La línea que me está arrojando la excepción es:
Código (cpp) [Seleccionar]

int prediction = model->predict(img);


¿Pero por qué sucede eso?
No tuve ningún problema con:
Código (cpp) [Seleccionar]

model->train(images, labels);


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. :)