Я разрабатываю приложение распознавания лиц USIN EmguCV 3.1. И я использую EigenFaceRecognizer как алгоритм распознавания. Я попытался подготовить изображение, используя приведенный ниже код.'Emgu.CV.Util.CvException' произошло в 'Emgu.CV.World.dll' - При попытке предсказать
List<Image<Gray, byte>> trainingImages = new List<Image<Gray, byte>>();
FaceRecognizer recognizer;
List<Face> faceList = new List<Face>();
...
...
recognizer = new EigenFaceRecognizer(80, double.PositiveInfinity);
...
...
Image<Gray, byte> image = new Image<Gray, byte>(imgBox2.DisplayedImage.Bitmap);
trainingImages.Add(image);
List<int> trainigLabels = new List<int>();
recognizer.Train(trainingImages.ToArray(), trainigLabels.ToArray());
recognizer.Save("TraningData");
faceList.Add(new Face(image.Bytes.Length, txtName.Text));
...
...
Image<Gray, byte> image = new Image<Gray, byte>(imgBox2.DisplayedImage.Bitmap);
recognizer.Load("TraningData");
try
{
var result = recognizer.Predict(image);
MessageBox.Show(result.Label.ToString());
}
catch (Emgu.CV.Util.CvException ex)
{
Console.WriteLine(ex);
}
Но когда этот код вызывается, он дает мне следующую ошибку.
A first chance exception of type 'Emgu.CV.Util.CvException' occurred in Emgu.CV.World.dll
The program '[1136] IPTest.vshost.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.
The program '[1136] IPTest.vshost.exe: Program Trace' has exited with code 0 (0x0).
Это происходит при попытке использовать recognizer.Train()
. Что я сделал не так?
UPDATE
После нескольких проб и ошибок я узнал, что проблема является методом recognizer.Predict().
Когда я TRY/поймать это показывает, за исключением следующего
Emgu.CV.Util.CvException: OpenCV: The matrix is not continuous, thus its number of rows can not be changed
Если я не ошибаюсь, 'first chance exception' означает, что вы где-то поймали исключение, иначе разместите блок try/catch вокруг своего кода и поймайте его. Пожалуйста, покажите нам сообщение об исключении и трассировку стека – slawekwin
@slawekwin благодарит вас. Я обновлю вопрос –
, так это ошибка в 'распознаватель.Train()' или 'распознаватель.Predict()'? – slawekwin