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

Книги по OpenCV

Recommended Posts

Вышла еще одна книжка (см. №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

  • Like 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте,

Разбираю примеры из 3)"Mastering OpenCV with Practical Computer Vision Projects". В главе 6 предлагается работать с annotation tool. Для этого сгенерировала сборочные файлы с помощью cmake и построила их в своей рабочей среде. Эти этапы прошли успешно. Но на выходе в соответствующей директории не нашла *.exe /* в папке debug лишь манифесты */. Если запустить непосредственно код, то на экране появляется консоль и сразу же вылетает без уведомления об ошибке.

Укажите на мои недочеты. Где я промахнулась?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

программа ждет параметры :)

а найти можно посмотрев на вывод компилятора, или поиском.

Если запускается из среды, значит она где то есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Извините. Спасибо. Проигнорировала совет посмотреть на вывод компилятора. Пропажа нашлась )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня они в MasteringOpenCV\Chapter6_NonRigidFaceTracking\src\bin\Release\ лежат

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кто-нибудь наталкивался на Q&A касательно 3)"Mastering OpenCV with Practical Computer Vision Projects"?

Книга очень интересная и полезная, но моих текущих знаний не хватает для понимания некоторого материала, в котором хочется разобраться более детально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

как бы есть сама книга вроде, или можете тут постить конкретные вопросы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все та же глава 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, если изображения изначально размечены

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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));
}
}
};
//==============================================================================

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Файлы пригодятся и за код спасибо.

1. На счет отладки: сначала нужно явно перезадать параметры, которые вводятся из командной строки, а потом трассировать. Или есть другой способ дебага без изменения кода?

2. По умолчанию .avi? В других приложениях .mov нормально так себе открывалось - все было читаемо.

3. Если я хочу применить annotate для своей базы изображений, то лучше соорудить из них видео (если это возможно) или есть менее ухищренный способ для разметки?

edit: Открываю теперь видео .avi, вместо .mov - читает. Нормально. Меняются кадры. Все как положено. Но когда начинаю разметку - вылетает с той же ошибкой, как и неоткрывшаяся база MUCT

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Свойства проекта->Configuration properties -> Debugging -> Command Arguments

По поводу остального не помню, давно делал, и сразу MUCT использовал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Там, помнится, вначале надо нахватать кадров (кнопкой s) из видео, затем нажать q.

На следующем шаге разметить первое изображение, опять q

и дальше размечать оставшиеся кадры перемещаться между кадрами кнопками o и p.

Там-же в коде все написано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну должно же быть логическое объяснение, почему компилятор ругается на

//annotate connectivity

...

while(1){ annotation.draw_connections();

imshow(annotation.wname,annotation.image);

if(waitKey(0) == 'q')break;

}

Метод дедукци не помог в отладке. Код-то рабочий, если вы выходные файлы выложили. Что тогда

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Директории в папке с екзешником:

indir

jpg

muct-landmarks

outdir

Изображения и muct-landmarks - вместе, как положено. Приложение там же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что пишет компилятор?

Мои файлы: opencv_hotshots.rar (может я чего правил, не помню уже).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Так заголовочники из директории с исходниками берутся, которая на входе 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"

Самое интересное то, что он ссылается на папку с исходниками, а не на мою собранную либу. Разве так должно быть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну по поводу раздельного хранения, мне не мешает, я об этом не думаю.

По поводу второго, это не компилятор выдает, это ошибка времени запуска.

Похоже что изображения просто нет (у вас программа от администратора запускается? Она может на диск файлы записывать?).

Посмотрите в отладке стек вызова. И увидите на чем падает.

Как сделать я картинку рисовал (2 пост):

http://www.compvision.ru/forum/index.php?showtopic=1064

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Извините, что от меня так много элементарных вопросов. Спасибо за помощь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ох, ну так я знаю на чем падает. 4 дня, как знаю. И без стека вызова. Контрольных точек хватило. Вот же

//annotate connectivity

...

while(1){ annotation.draw_connections();

imshow(annotation.wname,annotation.image);

if(waitKey(0) == 'q')break;

}

Вы правы, что

Похоже что изображения просто нет

Они-то есть, изображения, в нужной директории (в папке с екзешником), но прочитать их не удается.

Аналогичная ситуация для видео: хоть оно и загружается, но, по нажатию "q", - вылетает.

Если в моем случае все уж так совсем безнадежно, воспользуюсь вашим .yaml

Просто хотелось своими руками потрогать как работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А проследить добавление изображения по s, не хотите?

Ну и вообще на все действия программы повесить точки останова и понять заодно как там все работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×