Smorodov 579 Жалоба Опубликовано August 25, 2010 Я не знаю как в SVN версии, но в 2.0 и 2.1 это открытая проблема, о которой уже известно разработчикам: http://sourceforge.net/tracker/index.php?f...amp;atid=376677 Попробую построить SVN версию, и проверю, осталась-ли ошибка. В версии с SVN программа работает. В октябре должен выйти релиз. HMM_svn.RAR Для компиляции в C++ Builder 6 , нужно переписать с заменой, директории modules и include в папке с opencv. DLL и LIB файлы в архиве. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hamam 0 Жалоба Опубликовано August 25, 2010 В версии с SVN программа работает. В октябре должен выйти релиз. HMM_svn.RAR Для компиляции в C++ Builder 6 , нужно переписать с заменой, директории modules и include в папке с opencv. DLL и LIB файлы в архиве. Большое спасибо за высокую оценку ответить, я буду стараться, и пусть вы знаете, Еще раз спасибо Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hamam 0 Жалоба Опубликовано August 30, 2010 Большое спасибо за высокую оценку ответить, я буду стараться, и пусть вы знаете, Еще раз спасибо дорогой Smorodov Большое спасибо за Вашу помощь, я попытался OpenCV2.1, но я до сих пор вопрос с CV_Assert (src.type () == dst.type () и и src.size () == dst.size ()); Сообщение об ошибке "Ошибка утверждение удалось не могли бы вы советы мне в этом вопрос заранее спасибо Хамам Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 31, 2010 Please write in English better You have to use SVN version (https://code.ros.org/svn/opencv/trunk/opencv) of OpenCV, and if you use Borland C++ Builder, just replace some files I wrote above. There is a bug in 2.1, thats why you can't compile it in this version. If you use SVN version, just trace code (F8 in BCB6) and try to catch line that throw this exception, this exception mean that some function must get source and destination images of same size, but the sizes is not equal. It may be function like cvCopy, cvConvert or something like this. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hamam 0 Жалоба Опубликовано August 31, 2010 Please write in English better You have to use SVN version (https://code.ros.org/svn/opencv/trunk/opencv) of OpenCV, and if you use Borland C++ Builder, just replace some files I wrote above. There is a bug in 2.1, thats why you can't compile it in this version. If you use SVN version, just trace code (F8 in BCB6) and try to catch line that throw this exception, this exception mean that some function must get source and destination images of same size, but the sizes is not equal. It may be function like cvCopy, cvConvert or something like this. Dear Sir First of all sorry for my poor Russian but i thought it is more respectful to write in your language. thanks a lot for your highly appreciated reply and support.... the problem is as following i downloaded the latest version of opencv (2.1) VC++ (VS08) in order to wrap it with your code but i stuck with an issue CV_Assert( src.type() == dst.type() && src.size() == dst.size() ); "Assertion failed " because of the function CVExp called by cvEstimateObsProb in the training phase, for that reason i commented out this line and compile the opencv again the code looked as working fine but i faced an issue in the recognition part which is all the likelihood values of the five trained faces "Sergy , vldimir ,....." are negative value when they compared with any tested image. regards and sorry for disturbance thanks in advance Hamam Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 31, 2010 Dear Sir First of all sorry for my poor Russian but i thought it is more respectful to write in your language. thanks a lot for your highly appreciated reply and support.... the problem is as following i downloaded the latest version of opencv (2.1) VC++ (VS08) in order to wrap it with your code but i stuck with an issue CV_Assert( src.type() == dst.type() && src.size() == dst.size() ); "Assertion failed " because of the function CVExp called by cvEstimateObsProb in the training phase, for that reason i commented out this line and compile the opencv again the code looked as working fine but i faced an issue in the recognition part which is all the likelihood values of the five trained faces "Sergy , vldimir ,....." are negative value when they compared with any tested image. regards and sorry for disturbance thanks in advance Hamam I see that you dowload your version not from svn. To get latest version you need to use any svn client program, TortoiseSVN for example. Path for download svn version of opencv: https://code.ros.org/svn/opencv/trunk/opencv Just make a folder then right-click on it and select "SVN update", then input address I put a line above. Dowload sources, build configuration with cmake, and then build binaries of opencv with MSVC2008. If you want use it with BCB6 you must convert your libraries using borland tool COFF2OMF. Some headers must be corrected to compile with bcb. PS: You can use these lib's and dll's I post above and headers from the same archive too. That is enough for program compilation. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hamam 0 Жалоба Опубликовано September 1, 2010 I see that you dowload your version not from svn. To get latest version you need to use any svn client program, TortoiseSVN for example. Path for download svn version of opencv: https://code.ros.org/svn/opencv/trunk/opencv Just make a folder then right-click on it and select "SVN update", then input address I put a line above. Dowload sources, build configuration with cmake, and then build binaries of opencv with MSVC2008. If you want use it with BCB6 you must convert your libraries using borland tool COFF2OMF. Some headers must be corrected to compile with bcb. PS: You can use these lib's and dll's I post above and headers from the same archive too. That is enough for program compilation. thanks a lot for your support, it is working after your amazing comments 10000000000000000000000 thanks Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Shining ninja 0 Жалоба Опубликовано November 11, 2010 Ребята, объясните пожалуйста - у меня в начале выдает: ERROR: Could not load classifier cascade тут я так прописал: const char* cascade_name = "--cascade=C:\Program Files\OpenCV2.1\data\haarcascades\haarcascade_frontalface_alt.xml"; Подскажите пожалуйста, что нужно делать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 11, 2010 Ребята, объясните пожалуйста - у меня в начале выдает: ERROR: Could not load classifier cascade тут я так прописал: const char* cascade_name = "--cascade=C:\Program Files\OpenCV2.1\data\haarcascades\haarcascade_frontalface_alt.xml"; Подскажите пожалуйста, что нужно делать? cascade_name ="C:\Program Files\OpenCV2.1\data\haarcascades\haarcascade_frontalface_alt.xml" Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Shining ninja 0 Жалоба Опубликовано November 12, 2010 cascade_name ="C:\Program Files\OpenCV2.1\data\haarcascades\haarcascade_frontalface_alt.xml" Спасибо, что ответил, но также выдается: Could not load classifier cascade Вот по коду: const char* cascade_name ="C:\Program Files\OpenCV2.1\data\haarcascades\haarcascade_frontalface_alt.xml" ; .... int main( int argc, char** argv ) { .... int optlen = strlen("--cascade="); .... cascade_name = cascade_name+optlen; cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); if( !cascade ) { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); return -1; } Эти строчки отвечают за каскад, но не пойму, почему не работает Вот значение переменной cascade_name , после cascade_name = cascade_name+optlen: + cascade_name 0x0041674a "FilesOpenCV2.1datahaarcascadeshaarcascade_frontalface_alt.xml" const char * Есть еще мысли, подскажите пожалуйста. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 12, 2010 Спасибо, что ответил, но также выдается: Could not load classifier cascade Вот по коду: const char* cascade_name ="C:\Program Files\OpenCV2.1\data\haarcascades\haarcascade_frontalface_alt.xml" ; .... int main( int argc, char** argv ) { .... int optlen = strlen("--cascade="); .... cascade_name = cascade_name+optlen; cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); if( !cascade ) { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); return -1; } Эти строчки отвечают за каскад, но не пойму, почему не работает Вот значение переменной cascade_name , после cascade_name = cascade_name+optlen: + cascade_name 0x0041674a "FilesOpenCV2.1datahaarcascadeshaarcascade_frontalface_alt.xml" const char * Есть еще мысли, подскажите пожалуйста. Замените \ на \\ Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Shining ninja 0 Жалоба Опубликовано November 12, 2010 Замените \ на \\ Спасибо за ответ. Меня вот, что еще интересует, я немного вашу программу облегчил. Она находит лицо, сохраняет его, но в темном фоне или это так и должно быть? (кажется разобрался с этим) И самый главный вопрос - у меня есть картинка исходного изображения, возможно их сравнить и сделать вывод пускать или нет юзера к программе? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 12, 2010 Спасибо за ответ. Меня вот, что еще интересует, я немного вашу программу облегчил. Она находит лицо, сохраняет его, но в темном фоне или это так и должно быть? (кажется разобрался с этим) И самый главный вопрос - у меня есть картинка исходного изображения, возможно их сравнить и сделать вывод пускать или нет юзера к программе? Облегчили , это значит убрали приведение матриц к видимому виду, то есть к диапазону значений 0-255 Проведите эксперимент, исследуемый параметр - степень сходства. Я не использовал эту программу таким образом. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
wolfenstein 0 Жалоба Опубликовано November 13, 2010 Доброго времени суток. Хотелось бы выяснить вопрос - после изучения литературы он остался невыясненным. Является ли распознавание лиц с помощью СММ масшатбонезависимым? По моим экспериментам, выяснилось, что результат зависит разницы масштабов исходных и сравниваемых изображений. Для исключения такой ситуации на данный момент у меня в работах происходит нормализация изображений по масштабу. Масштабирую я приведением коэффициентов DCT. Пока что это просто нормализация по отношению размеров. Вот хотелось бы знать, правилен ли этот подход. Если направление правильно, то как найти более оптимальную зависимость коэффициентов DCT от масштаба изображения? Заранее благодарен. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
tipabot 0 Жалоба Опубликовано November 14, 2010 Может кто знает пытаюсь запустить проект автора темы (на С++ bilder 2009 но это наверно не важно) вылазит такая вот ошибка ну ошибка понятна но как ее решить не знаю пробовал libPNG.dll версии 1.2.5 и 1.2.4 но ошибка та же Заранее спасибо Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 14, 2010 Может кто знает пытаюсь запустить проект автора темы (на С++ bilder 2009 но это наверно не важно) вылазит такая вот ошибка ну ошибка понятна но как ее решить не знаю пробовал libPNG.dll версии 1.2.5 и 1.2.4 но ошибка та же Заранее спасибо Указать при конфигурировании проекта библиотеки opencv, что хотите LibPNG использовать, и он её встроит. После компиляции будет lib и dll. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SilAs 0 Жалоба Опубликовано November 2, 2011 (изменено) Здравствуйте, я скачиваю архив с исходником из первого поста и приходит битый архив. Не могли бы вы выложить еще раз или выслать на емейл. Или это проблемы у меня ? Спасибо ) п.с. кстати, файлы ПДФ, выложенные в теме тоже не читаются... Изменено November 2, 2011 пользователем SilAs Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 2, 2011 Спасибо за найденный битый файл. Я его перезалил. По поводу оставшихся ссылок, проверю еще раз вечером. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShurikEv 0 Жалоба Опубликовано November 23, 2011 А можно аналог функции ExtractDCT() на C#? Спасибо Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShurikEv 0 Жалоба Опубликовано November 23, 2011 И еще вопрос, есть ли возможность произвести обучение только один раз, получив параметры, сохранить их где-нибудь (БД, файл и тд), и при следующем запуске программы не проводить обучение еще раз, а прочитать уже обученные параметры? И есть ли возможность дообучить, если появляется еще один индивид? Судя по коду, это надо модифицировать переменную Ehmms, добавив полученные параметры обучения. Спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShurikEv 0 Жалоба Опубликовано November 24, 2011 А можно аналог функции ExtractDCT() на C#? Спасибо Получилось так. 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); } Не знаю насколько правильно, но работает Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShurikEv 0 Жалоба Опубликовано November 24, 2011 Пытаюсь реализовать на .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 узнать требуемую размерность параметров? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 24, 2011 cvSave-ом не сохраняется? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ShurikEv 0 Жалоба Опубликовано November 25, 2011 cvSave-ом не сохраняется? именно эти элементы структуры нет. Говорит: "External component has thrown an exception.". В качестве враппера использовал этот Пробовал сохранять матрицы, правда созданные в коде C#, они нормально сохраняются. Что с этим делать хз. Вразумительного ответа в информации об исключении не нашёл. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 25, 2011 Этот файл раньше вместе с проектом в первом топике шел, после перезаливки я наверное его забыл прицепить, а может он там еще, лень проверять, поэтому прицепляю отдельно. Там нужно смотреть hmmfaces/FaceRecognition/Ehmm.h и Ehmm.cpp.HMMFacesAlpha0_1.zip 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах