Smorodov 578 Report post Posted 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 файлы в архиве. Share this post Link to post Share on other sites
hamam 0 Report post Posted August 25, 2010 В версии с SVN программа работает. В октябре должен выйти релиз. HMM_svn.RAR Для компиляции в C++ Builder 6 , нужно переписать с заменой, директории modules и include в папке с opencv. DLL и LIB файлы в архиве. Большое спасибо за высокую оценку ответить, я буду стараться, и пусть вы знаете, Еще раз спасибо Share this post Link to post Share on other sites
hamam 0 Report post Posted August 30, 2010 Большое спасибо за высокую оценку ответить, я буду стараться, и пусть вы знаете, Еще раз спасибо дорогой Smorodov Большое спасибо за Вашу помощь, я попытался OpenCV2.1, но я до сих пор вопрос с CV_Assert (src.type () == dst.type () и и src.size () == dst.size ()); Сообщение об ошибке "Ошибка утверждение удалось не могли бы вы советы мне в этом вопрос заранее спасибо Хамам Share this post Link to post Share on other sites
Smorodov 578 Report post Posted 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. Share this post Link to post Share on other sites
hamam 0 Report post Posted 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 Share this post Link to post Share on other sites
Smorodov 578 Report post Posted 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. Share this post Link to post Share on other sites
hamam 0 Report post Posted 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 Share this post Link to post Share on other sites
Shining ninja 0 Report post Posted 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"; Подскажите пожалуйста, что нужно делать? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted 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" Share this post Link to post Share on other sites
Shining ninja 0 Report post Posted 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 * Есть еще мысли, подскажите пожалуйста. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted 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 * Есть еще мысли, подскажите пожалуйста. Замените \ на \\ Share this post Link to post Share on other sites
Shining ninja 0 Report post Posted November 12, 2010 Замените \ на \\ Спасибо за ответ. Меня вот, что еще интересует, я немного вашу программу облегчил. Она находит лицо, сохраняет его, но в темном фоне или это так и должно быть? (кажется разобрался с этим) И самый главный вопрос - у меня есть картинка исходного изображения, возможно их сравнить и сделать вывод пускать или нет юзера к программе? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted November 12, 2010 Спасибо за ответ. Меня вот, что еще интересует, я немного вашу программу облегчил. Она находит лицо, сохраняет его, но в темном фоне или это так и должно быть? (кажется разобрался с этим) И самый главный вопрос - у меня есть картинка исходного изображения, возможно их сравнить и сделать вывод пускать или нет юзера к программе? Облегчили , это значит убрали приведение матриц к видимому виду, то есть к диапазону значений 0-255 Проведите эксперимент, исследуемый параметр - степень сходства. Я не использовал эту программу таким образом. Share this post Link to post Share on other sites
wolfenstein 0 Report post Posted November 13, 2010 Доброго времени суток. Хотелось бы выяснить вопрос - после изучения литературы он остался невыясненным. Является ли распознавание лиц с помощью СММ масшатбонезависимым? По моим экспериментам, выяснилось, что результат зависит разницы масштабов исходных и сравниваемых изображений. Для исключения такой ситуации на данный момент у меня в работах происходит нормализация изображений по масштабу. Масштабирую я приведением коэффициентов DCT. Пока что это просто нормализация по отношению размеров. Вот хотелось бы знать, правилен ли этот подход. Если направление правильно, то как найти более оптимальную зависимость коэффициентов DCT от масштаба изображения? Заранее благодарен. Share this post Link to post Share on other sites
tipabot 0 Report post Posted November 14, 2010 Может кто знает пытаюсь запустить проект автора темы (на С++ bilder 2009 но это наверно не важно) вылазит такая вот ошибка ну ошибка понятна но как ее решить не знаю пробовал libPNG.dll версии 1.2.5 и 1.2.4 но ошибка та же Заранее спасибо Share this post Link to post Share on other sites
Smorodov 578 Report post Posted November 14, 2010 Может кто знает пытаюсь запустить проект автора темы (на С++ bilder 2009 но это наверно не важно) вылазит такая вот ошибка ну ошибка понятна но как ее решить не знаю пробовал libPNG.dll версии 1.2.5 и 1.2.4 но ошибка та же Заранее спасибо Указать при конфигурировании проекта библиотеки opencv, что хотите LibPNG использовать, и он её встроит. После компиляции будет lib и dll. Share this post Link to post Share on other sites
SilAs 0 Report post Posted November 2, 2011 (edited) Здравствуйте, я скачиваю архив с исходником из первого поста и приходит битый архив. Не могли бы вы выложить еще раз или выслать на емейл. Или это проблемы у меня ? Спасибо ) п.с. кстати, файлы ПДФ, выложенные в теме тоже не читаются... Edited November 2, 2011 by SilAs Share this post Link to post Share on other sites
Smorodov 578 Report post Posted November 2, 2011 Спасибо за найденный битый файл. Я его перезалил. По поводу оставшихся ссылок, проверю еще раз вечером. Share this post Link to post Share on other sites
ShurikEv 0 Report post Posted November 23, 2011 А можно аналог функции ExtractDCT() на C#? Спасибо Share this post Link to post Share on other sites
ShurikEv 0 Report post Posted November 23, 2011 И еще вопрос, есть ли возможность произвести обучение только один раз, получив параметры, сохранить их где-нибудь (БД, файл и тд), и при следующем запуске программы не проводить обучение еще раз, а прочитать уже обученные параметры? И есть ли возможность дообучить, если появляется еще один индивид? Судя по коду, это надо модифицировать переменную Ehmms, добавив полученные параметры обучения. Спасибо. Share this post Link to post Share on other sites
ShurikEv 0 Report post Posted 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); } Не знаю насколько правильно, но работает Share this post Link to post Share on other sites
ShurikEv 0 Report post Posted 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 узнать требуемую размерность параметров? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted November 24, 2011 cvSave-ом не сохраняется? Share this post Link to post Share on other sites
ShurikEv 0 Report post Posted November 25, 2011 cvSave-ом не сохраняется? именно эти элементы структуры нет. Говорит: "External component has thrown an exception.". В качестве враппера использовал этот Пробовал сохранять матрицы, правда созданные в коде C#, они нормально сохраняются. Что с этим делать хз. Вразумительного ответа в информации об исключении не нашёл. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted November 25, 2011 Этот файл раньше вместе с проектом в первом топике шел, после перезаливки я наверное его забыл прицепить, а может он там еще, лень проверять, поэтому прицепляю отдельно. Там нужно смотреть hmmfaces/FaceRecognition/Ehmm.h и Ehmm.cpp.HMMFacesAlpha0_1.zip 1 Share this post Link to post Share on other sites