ShurikEv
Пользователи-
Количество публикаций
9 -
Зарегистрирован
-
Посещение
Репутация
0 НовичекО ShurikEv
-
Звание
Новичок
-
40 - количество людей 10 - количество фото каждого человека Т.е. фото каждого человека обучается на массиве из 10 фото. Ясно, что можно обучаться на разных массивах, но чем больше фото, тем лучше. .pgm - это формат изображения. Можно использовать и jpg. Как я понял, необходимо на фото найти область лицы (каскады Хаара), перевести фото в чб-режим, и уже по полученному изображению обучаться. Фото можно и заменить, но лучше разобраться в программе (благо она не сложная) и модифицировать код под свои нужды.
-
на плюсах реализовал свои классы для распознавания, вытащил во внешние функции и их заврапил. Т.е. врапил только свои функции, в которых использовались функции библиотеки OpenCv
-
Я в итоге реализовал на С++, а на С# написал враппер на некоторые функции. На плюсах действительно все быстрее работает, главное избегать утечек памяти
-
Не подскажите, в теории какими фотографиями лучше оперировать? В примерах используются полутоновые изображения лица (ч/б). Можно ли подсовывать данному алгоритму цветное фото, на котором лицо не обязательно занимает основную область фотографии (далеко расположено)? Или нужно с помощью каскадов Хара определить лицо на фото, вырезать его, преобразовать в ч/б? И уже потом с этими обработанными фотографиями работать. И насколько мелкими могут быть фотографии? Или под какой размер лучше подгонять изображения? Используя ваш код, при попытке загрузки фото размером 35х43 я получал ошибку доступа к памяти (не может быть прочитана). Есть ли смысл увеличивать изображение до нужного минимального размера?
-
именно эти элементы структуры нет. Говорит: "External component has thrown an exception.". В качестве враппера использовал этот Пробовал сохранять матрицы, правда созданные в коде C#, они нормально сохраняются. Что с этим делать хз. Вразумительного ответа в информации об исключении не нашёл.
-
Пытаюсь реализовать на .NET сохранение и восстановление данных на диске. Для этого нужно работать со структурой CvEHMM. typedef struct CvEHMM { int level; /* 0 - lowest(i.e its states are real states), ..... */ int num_states; /* number of HMM states */ float* transP;/*transition probab. matrices for states */ float** obsProb; /* if level == 0 - array of brob matrices corresponding to hmm if level == 1 - martix of matrices */ union { CvEHMMState* state; /* if level == 0 points to real states array, if not - points to embedded hmms */ struct CvEHMM* ehmm; /* pointer to an embedded model or NULL, if it is a leaf */ } u; } CvEHMM; У меня возникают проблемы с тем, чтобы прочитать параметры transP и obsProb. В обертке для C# эти переменные имеют тип IntPtr. Есть ли возможность узнать размерность этих данных? или хотя бы как из данных, что передаются функции icvCreate2DHMM узнать требуемую размерность параметров?
-
Получилось так. private void ExtractDCT(float[] src, IntPtr dst, int numVec, int dstLen) { int tmpSrc = 1; int tmpDst = 0; float[] dstArr = new float[dstLen * numVec]; for (int i = 0; i < numVec; i++) { int l = src.Length - tmpSrc > dstLen ? dstLen : src.Length - tmpSrc; Array.Copy(src, tmpSrc, dstArr, tmpDst, l); tmpSrc += dstLen + 1; tmpDst += dstLen; } Marshal.Copy(dstArr, 0, dst, dstArr.Length); } Не знаю насколько правильно, но работает
-
И еще вопрос, есть ли возможность произвести обучение только один раз, получив параметры, сохранить их где-нибудь (БД, файл и тд), и при следующем запуске программы не проводить обучение еще раз, а прочитать уже обученные параметры? И есть ли возможность дообучить, если появляется еще один индивид? Судя по коду, это надо модифицировать переменную Ehmms, добавив полученные параметры обучения. Спасибо.
-
ShurikEv начал следование за Распознавание лиц HMM (Скрытые марковские модели)
-
А можно аналог функции ExtractDCT() на C#? Спасибо