Smorodov 578 Report post Posted January 26, 2013 Вышла еще одна книжка (см. №3) и я решил для удобства собрать эти книжки вместе: 1)"Learning OpenCV. Computer Vision in C++ with the OpenCV Library. 2nd Edition"http://shop.oreilly.com/product/0636920022497.do Благородная попытка перевода ее на русский язык первого издания этой книги:http://locv.ru/wiki/%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 2)"OpenCV 2 Computer Vision Application Programming Cookbook" ссылка на исходный код на сайтеhttp://www.laganiere.name/opencvCookbook/ 3)"Mastering OpenCV with Practical Computer Vision Projects" очень интересные проекты с исходниками.http://www.packtpub.com/cool-projects-with-opencv/book исходники здесь:https://github.com/MasteringOpenCV/code Еще одна книжка с opensouce исходниками: Practical OpenCV By Samarth Brahmbhatt Список книг по Opencv от opencv.org: http://opencv.org/books.html Еще бесплатная книжка: "Modern Robotics with OpenCV" здесь: http://www.sciencepublishinggroup.com/book/B-978-1-940366-12-8.aspx 4 Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 16, 2013 Здравствуйте, Разбираю примеры из 3)"Mastering OpenCV with Practical Computer Vision Projects". В главе 6 предлагается работать с annotation tool. Для этого сгенерировала сборочные файлы с помощью cmake и построила их в своей рабочей среде. Эти этапы прошли успешно. Но на выходе в соответствующей директории не нашла *.exe /* в папке debug лишь манифесты */. Если запустить непосредственно код, то на экране появляется консоль и сразу же вылетает без уведомления об ошибке. Укажите на мои недочеты. Где я промахнулась? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 16, 2013 программа ждет параметры а найти можно посмотрев на вывод компилятора, или поиском. Если запускается из среды, значит она где то есть. Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 16, 2013 Запускается и сразу вылетает. Поиск не дал результатов. Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 16, 2013 Извините. Спасибо. Проигнорировала совет посмотреть на вывод компилятора. Пропажа нашлась ) Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 16, 2013 У меня они в MasteringOpenCV\Chapter6_NonRigidFaceTracking\src\bin\Release\ лежат Share this post Link to post Share on other sites
mrgloom 242 Report post Posted April 17, 2013 Warning for Visual Studio users: If you run the program directly in Visual Studio (eg: by clicking on "Debug->Start Without Debugging"), then Visual Studio will default to setting the "current folder" as the parent folder instead of the folder with "WebcamFaceRec.exe". So you might need to move or copy the XML file from the Debug / Release folder to the parent folder for it to run directly in Visual Studio. Or adjust your project properties so that it executes the program in the project output folder instead of the solution folder. вроде там написано https://github.com/MasteringOpenCV/code/tree/master/Chapter8_FaceRecognition Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 17, 2013 Не добралась до 8 главы. Но то, что протупила - согласна Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 19, 2013 Кто-нибудь наталкивался на Q&A касательно 3)"Mastering OpenCV with Practical Computer Vision Projects"? Книга очень интересная и полезная, но моих текущих знаний не хватает для понимания некоторого материала, в котором хочется разобраться более детально. Share this post Link to post Share on other sites
mrgloom 242 Report post Posted April 19, 2013 как бы есть сама книга вроде, или можете тут постить конкретные вопросы. Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 19, 2013 Все та же глава 6. 1. Приложение annotate вылетает с ошибкой рантайма при параметрах: -m D:\muct\ -d D:\output\ 2. "Failed opening video file." при параметрах -v D:\videofile.mov -d D:\output\ 3. Зачем применять annotation tool к MUCT, если изображения изначально размечены Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 19, 2013 1. запустите с дебага и посмотрите где падает. 2. а есть там этот файл? Или может кодека нет для .mov. 3. annotate, добавляет связи между точками между которыми будут рисоваться линии (это просто для прорисовки). И формирует файл annotations.yaml. Прикрепляю сгенерированные файлы (мало-ли пригодятся): MOCV.rar Директории в папке с екзешником: indir jpg muct-landmarks outdir[/code] Если у Вас не так, надо поправить файл аннотаций. ЗЫ: Функция чтения MUCT там кривоватая, я подправил: [code]//============================================================================== class muct_data { public: string name; string index; vector<Point2f> points; muct_data(string str, string muct_dir) { size_t p1 = 0,p2; //set image directory string idir = muct_dir; if(idir[idir.length()-1] != '/') { idir += "/"; } idir += "jpg/"; //get image name p2 = str.find(","); if(p2 == string::npos) { cerr << "Invalid MUCT file" << endl; exit(0); } name = str.substr(p1,p2-p1); if((strcmp(name.c_str(),"i434xe-fn") == 0) || //corrupted data (name[1] == 'r')) { name = ""; //ignore flipped images } else { name = idir + str.substr(p1,p2-p1) + ".jpg"; p1 = p2+1; //get index p2 = str.find(",",p1); if(p2 == string::npos) { cerr << "Invalid MUCT file" << endl; exit(0); } index = str.substr(p1,p2-p1); p1 = p2+1; //get points for(int i = 0; i < 75; i++) { p2 = str.find(",",p1); if(p2 == string::npos) { cerr << "Invalid MUCT file" << endl; exit(0); } string x = str.substr(p1,p2-p1); p1 = p2+1; p2 = str.find(",",p1); if(p2 == string::npos) { cerr << "Invalid MUCT file" << endl; exit(0); } string y = str.substr(p1,p2-p1); p1 = p2+1; double px=atof(x.c_str()); double py=atof(y.c_str()); // Игнорируем также разметку, содержащую нулевые координаты if(px==0 || py==0) {name = "";} points.push_back(Point2f(px,py)); } p2 = str.find(",",p1); if(p2 == string::npos) { cerr << "Invalid MUCT file" << endl; exit(0); } string x = str.substr(p1,p2-p1); p1 = p2+1; string y = str.substr(p1,str.length()-p1); double px=atof(x.c_str()); double py=atof(y.c_str()); if(px==0 || py==0) {name = "";} points.push_back(Point2f(px,py)); } } }; //============================================================================== Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 19, 2013 Файлы пригодятся и за код спасибо. 1. На счет отладки: сначала нужно явно перезадать параметры, которые вводятся из командной строки, а потом трассировать. Или есть другой способ дебага без изменения кода? 2. По умолчанию .avi? В других приложениях .mov нормально так себе открывалось - все было читаемо. 3. Если я хочу применить annotate для своей базы изображений, то лучше соорудить из них видео (если это возможно) или есть менее ухищренный способ для разметки? edit: Открываю теперь видео .avi, вместо .mov - читает. Нормально. Меняются кадры. Все как положено. Но когда начинаю разметку - вылетает с той же ошибкой, как и неоткрывшаяся база MUCT Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 19, 2013 Свойства проекта->Configuration properties -> Debugging -> Command Arguments По поводу остального не помню, давно делал, и сразу MUCT использовал. Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 19, 2013 угу. буду пробовать Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 19, 2013 Там, помнится, вначале надо нахватать кадров (кнопкой s) из видео, затем нажать q. На следующем шаге разметить первое изображение, опять q и дальше размечать оставшиеся кадры перемещаться между кадрами кнопками o и p. Там-же в коде все написано. Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 19, 2013 Вылетает при нажатии q. Отлажу - отпишусь Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 19, 2013 Ну должно же быть логическое объяснение, почему компилятор ругается на //annotate connectivity ... while(1){ annotation.draw_connections(); imshow(annotation.wname,annotation.image); if(waitKey(0) == 'q')break; } Метод дедукци не помог в отладке. Код-то рабочий, если вы выходные файлы выложили. Что тогда Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 19, 2013 Директории в папке с екзешником: indir jpg muct-landmarks outdir Изображения и muct-landmarks - вместе, как положено. Приложение там же. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 19, 2013 Что пишет компилятор? Мои файлы: opencv_hotshots.rar (может я чего правил, не помню уже). Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 19, 2013 Так заголовочники из директории с исходниками берутся, которая на входе CMAKE Как-то криво получается: нужно хранить построенную opencv (в которой LIB и DLL) + папку с исходниками для доступа к заголовочникам? Что пишет компилятор? "OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in unknown function, file ...\opencv\modules\core\src\array.cpp, line 2482" Самое интересное то, что он ссылается на папку с исходниками, а не на мою собранную либу. Разве так должно быть? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 19, 2013 Ну по поводу раздельного хранения, мне не мешает, я об этом не думаю. По поводу второго, это не компилятор выдает, это ошибка времени запуска. Похоже что изображения просто нет (у вас программа от администратора запускается? Она может на диск файлы записывать?). Посмотрите в отладке стек вызова. И увидите на чем падает. Как сделать я картинку рисовал (2 пост): http://www.compvision.ru/forum/index.php?showtopic=1064 Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 19, 2013 Извините, что от меня так много элементарных вопросов. Спасибо за помощь Share this post Link to post Share on other sites
YuliyaChuguy 1 Report post Posted April 20, 2013 Ох, ну так я знаю на чем падает. 4 дня, как знаю. И без стека вызова. Контрольных точек хватило. Вот же //annotate connectivity ... while(1){ annotation.draw_connections(); imshow(annotation.wname,annotation.image); if(waitKey(0) == 'q')break; } Вы правы, что Похоже что изображения просто нет Они-то есть, изображения, в нужной директории (в папке с екзешником), но прочитать их не удается. Аналогичная ситуация для видео: хоть оно и загружается, но, по нажатию "q", - вылетает. Если в моем случае все уж так совсем безнадежно, воспользуюсь вашим .yaml Просто хотелось своими руками потрогать как работает Share this post Link to post Share on other sites
Smorodov 578 Report post Posted April 20, 2013 А проследить добавление изображения по s, не хотите? Ну и вообще на все действия программы повесить точки останова и понять заодно как там все работает. Share this post Link to post Share on other sites