Перейти к содержимому
Compvision.ru

ShurikEv

Пользователи
  • Количество публикаций

    9
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О ShurikEv

  • Звание
    Новичок
  1. 40 - количество людей 10 - количество фото каждого человека Т.е. фото каждого человека обучается на массиве из 10 фото. Ясно, что можно обучаться на разных массивах, но чем больше фото, тем лучше. .pgm - это формат изображения. Можно использовать и jpg. Как я понял, необходимо на фото найти область лицы (каскады Хаара), перевести фото в чб-режим, и уже по полученному изображению обучаться. Фото можно и заменить, но лучше разобраться в программе (благо она не сложная) и модифицировать код под свои нужды.
  2. на плюсах реализовал свои классы для распознавания, вытащил во внешние функции и их заврапил. Т.е. врапил только свои функции, в которых использовались функции библиотеки OpenCv
  3. Я в итоге реализовал на С++, а на С# написал враппер на некоторые функции. На плюсах действительно все быстрее работает, главное избегать утечек памяти
  4. Не подскажите, в теории какими фотографиями лучше оперировать? В примерах используются полутоновые изображения лица (ч/б). Можно ли подсовывать данному алгоритму цветное фото, на котором лицо не обязательно занимает основную область фотографии (далеко расположено)? Или нужно с помощью каскадов Хара определить лицо на фото, вырезать его, преобразовать в ч/б? И уже потом с этими обработанными фотографиями работать. И насколько мелкими могут быть фотографии? Или под какой размер лучше подгонять изображения? Используя ваш код, при попытке загрузки фото размером 35х43 я получал ошибку доступа к памяти (не может быть прочитана). Есть ли смысл увеличивать изображение до нужного минимального размера?
  5. именно эти элементы структуры нет. Говорит: "External component has thrown an exception.". В качестве враппера использовал этот Пробовал сохранять матрицы, правда созданные в коде C#, они нормально сохраняются. Что с этим делать хз. Вразумительного ответа в информации об исключении не нашёл.
  6. Пытаюсь реализовать на .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 узнать требуемую размерность параметров?
  7. Получилось так. 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); } Не знаю насколько правильно, но работает
  8. И еще вопрос, есть ли возможность произвести обучение только один раз, получив параметры, сохранить их где-нибудь (БД, файл и тд), и при следующем запуске программы не проводить обучение еще раз, а прочитать уже обученные параметры? И есть ли возможность дообучить, если появляется еще один индивид? Судя по коду, это надо модифицировать переменную Ehmms, добавив полученные параметры обучения. Спасибо.
  9. А можно аналог функции ExtractDCT() на C#? Спасибо
×