_


среда, 19 января 2011 г.

Установка и настройка OpenCV под Visual Studio 2010



Привет, пипл ;) Сегодня речь пойдет о такой интересной вещи как библиотека компьютерного зрения OpenCV. Почитать о ней можно как из оффициальных источников, википедии, а также можно найти пару-тройку интересных ссылок у меня в блоге. Так как поиск в интернете по установке OpenCV ничего полезного не дал (рассматривались старые версии), решил попробовать сам ... 

Итак, приступим ...
Качаем новую версию (на текущий момент OpenCV-2.2.0-win32-vs2010.exe)
(установка новой версии OpenCV 2.3 показана в самом низу)


Далее, после установки OpenCV, её необходимо скомпилировать ... Запускаем CMake и указываем параметры как на рисунке:


После чего кликаем Configure (указываем нужный нам компилятор - у меня к примеру "Visual Studio 10 Win64"), (Появилось много-много красных полей) после чего еще раз тыкаем Configure, потом Generate. Говорим CMake'у спасибо и закрываем его.

Следующий шаг - компиляция OpenCV. Заходим в папку C:\OpenCV2.2\build\ и открываем OpenCV.sln в Visual Studio. После загрузки проекта жмем F6 и долго-долго ждем компиляции (я собираю и DEBUG и RELEASE) ...

 После компиляции OpenCV, запускаем Visual Studio и создаем новое решение (Solution)
 Далее зайдем в свойства проекта:


Теперь зайдем во вкладку "Каталоги VC++"


Добавим: 
В "каталоги включения":
C:\OpenCV2.2\include\
C:\OpenCV2.2\include\opencv

В "каталог библиотек":
C:\OpenCV2.2\lib

Далее переходим в Компоновщик -> Ввод
и добавляем в "Дополнительные зависимости":
opencv_core220d.lib
opencv_contrib220d.lib
opencv_features2d220d.lib
opencv_flann220d.lib
opencv_highgui220d.lib
opencv_objdetect220d.lib
opencv_video220d.lib
opencv_legacy220d.lib
opencv_calib3d220d.lib
opencv_ffmpeg220d.lib
opencv_imgproc220d.lib
opencv_ml220d.lib

Вот и всё ... удачи в разработке!

Установка, компиляция OpenCV 2.3.x и настройка проекта

1. Создаем папку D:\OpenCV_SVN
2. Конфигурируем OpenCV как указано в моем руководстве Шаманим над QT+VS2010+OPENCV: Интеграция трёх замечательных продуктов
3. Далее, пишем маленький OpenCV Hello, World:




Для проигрывания видео:





p.s. документация к версии OpenCV 2.3.x тут: http://opencv.itseez.com/

45 комментариев:

Анонимный комментирует...

Может всё-таки нажимаем f7 или f5 на худой конец в visual studio при линковке проекта? =)

Андрей комментирует...

Так как я предпочитаю C#, то IDE настроена под него, поэтому у меня F6. Если у вас VS настроена под C++ ну думаю тут и самим можно догадаться, что делать. Хотя комменты будут полезны чайникам :)

Анонимный комментирует...

Да, поможет :) А ты выложишь тут статьи по распознаванию образов с помощью opencv? Просто очень надо сейчас именно этот материал, писал уже на http://www.compvision.ru/forum/index.php?showtopic=335&st=20&gopid=3226&#entry3226 , может он мне поможет?
Или может ты сам сталкивался с такой задачей и знаешь что подсказать на уровне исходного кода? Очень хотелось бы увидеть здесь, на сайте, либо на форуме хотя бы один вразумительный ответ

Андрей комментирует...

Хм, ну что могу посоветовать ...
1. Для хранения изображений пойдет и MySQL, используй тип BLOB
2. Для нахождения лиц на фото используй метод каскадов Хаара
3. Для нахождения соответствий используй SURF/SIFT
Я пока не сталкивался именно с задачей распознавания образов, но считаю, что тема эта довольно широко раскрыта, потому что натыкался на статейки.

p.s. Просьба всем комментирующим - указывайте хотя бы свой ник :)

Анонимный комментирует...

kalian

Все комменты выше писал я )
1. Пойдет, но как долго он будет выдирать из базы фотки?
2. Как его обучить скажем с 1000 экземплярами? Нашел пока что вменяемую обучалку только у http://note.sonots.com/SciSoftware/haartraining.html
3. Стробаст фичерз предполагает заведомо заложенных прототипов в базу с фотками, так?

Андрей комментирует...

1. Насчет базы могу сказать, что это - второстепенная задача. Насколько я понимаю, главное для тебя - создание алгоритма распознавания образов. Для начала можешь просто брать фотки с локального диска, про базу думай потом.
2. Тут, видимо, надо копать в сторону нейросетей/генетических алгоритмов. Советую заглянуть сюда, а также хорошо погуглить.
3. SURF ищет особые "ключевые" точки на изображении. Опять же, советую почитать вот это (изучение SURF начинал именно с этой статьи). Также посмотри эту статейку. Автор тот же самый, что и в предыдущей.

Анонимный комментирует...

Почему может не распозноваться библиотека "opencv.hpp"?

Андрей комментирует...

*.hpp это не библиотека, а заголовочный файл. Как подключаете? Какие ошибки?

Константин комментирует...

Андрей. Если Вы хоть немного разбираетесь в OPEN CV, напиите на back1917@mail.ru есть работенка. Спасибо.

zxFRoL комментирует...

Я как раз и есть "чайник" во время линковки не удалось найти \ALL_BUILD

30>------ Построение начато: проект: ALL_BUILD, Конфигурация: Debug x64 ------
30>Построение начато 22.02.2012 19:22:46.
30>InitializeBuildStatus:
30> Создание "x64\Debug\ALL_BUILD\ALL_BUILD.unsuccessfulbuild", так как было задано "AlwaysCreate".
30>CustomBuild:
30> Build all projects
30> Building Custom Rule C:/OpenCV2.2/CMakeLists.txt
30> CMake does not need to re-run because C:\OpenCV2.2\build\CMakeFiles\generate.stamp is up-to-date.
30>FinalizeBuildStatus:
30> Файл "x64\Debug\ALL_BUILD\ALL_BUILD.unsuccessfulbuild" удаляется.
30> Обращение к "x64\Debug\ALL_BUILD\ALL_BUILD.lastbuildstate".
30>
30>Построение успешно завершено.
30>
30>Затраченное время: 00:00:00.22
========== Построение: успешно: 30, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

БУДУ ОЧЕНЬ ПРИСНАТЕЛЕН САПАСИБО

Андрей А комментирует...

zxFRoL, скольки битная у вас операционная система? 32 или 64 ?

zxFRoL комментирует...

64, Уважаемый!

Андрей А комментирует...

Предположу, что при создании проекта CMake'ом что-то пошло не так ... и какая у вас версия Visual Studio?

zxFRoL комментирует...
Этот комментарий был удален администратором блога.
zxFRoL комментирует...

точнее 10.0.30319.1 (treal)

Андрей А комментирует...

CMake что говорит ? Надеюсь, последняя/стабильная версия используется ?

zxFRoL комментирует...

Все как в мануале (покраснела:)))

Андрей А комментирует...

CMake "краснеет", после чего надо сделать так, чтобы "красных" строк не было, так как это ошибки. После чего можно открывать проект

Анонимный комментирует...

Здравствуйте,проблема нету файла ffmpegd.lib
как описано выше(в инструкции),смотрел папку build
в ней lib там его тож нету,чё делать подскажите
Дима

Анонимный комментирует...

Дима, сбилди в дебаге, появится

Анонимный комментирует...

а вот и проблема собственно

1>------ Построение начато: проект: ZERO_CHECK, Конфигурация: Release Win32 ------
2>------ Построение начато: проект: opencv_ffmpeg, Конфигурация: Release Win32 ------
2> Copying C:/Program Files/opencv/3rdparty/ffmpeg/opencv_ffmpeg.dll to the output directory
3>------ Построение начато: проект: ALL_BUILD, Конфигурация: Release Win32 ------
3> Build all projects
========== Построение: успешно: 3, с ошибками: 0, без изменений: 121, пропущено: 0 ==========

Анонимный комментирует...

Дима:-сбилдил в дебаге и тоже самое(предыдущий анонимный пост),но это после того как очень долго билдился ALL_BUILD и примеры

Анонимный комментирует...

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

Анонимный комментирует...

У меня нет ffmpegd.lib, видимо и не должно быть. Есть opencv_ffmpeg_64.dll. Поверх ничег оставить не надо. Я советую Emgu CV. Только зачем он, если есть OpenCV ?)

Анонимный комментирует...

а я смогу исрользовать С# и openCV вместе или всё таки нужен шарпер???
и с чего лучше начинать изучение библиотеки opencv???

Андрей А комментирует...

Дима, не ленись, а почитай блог и погугли. EmguCV это враппер, чтобы использовать функции OpenCV под C#. Там вроде нужны только библиотеки OpenCV (я давно этим занимался, уже не помню)

Анонимный комментирует...

А такой вопрос: указал в проэкте входные файлы, библиотеки, зависимости, а он при компиляции заявляет на #include что "Не удается открыть файл включение: cv.h: No such file or directory"

Анонимный комментирует...

все, понял что был не прав, нашел решение (это к предыдущему анонимному посту)

Анонимный комментирует...

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

Андрей А комментирует...

Привет. Все очень просто. Необходимо закинуть требуемые вашим приложением OpenCV-библиотеки в папку с приложением и распространять в таком виде.

Анонимный комментирует...

т.е скопировать хедеры в папку, а в самом проекте записать в формате
#include "core_c.h"
...
#include "objdetect.hpp" ?

Андрей А комментирует...

Хидеры - это хидеры, а библиотеки - это библиотеки.
Ваш К.О. :)

p.s. библиотеки = файлы с расширением *.dll

Анонимный комментирует...

http://robocraft.ru/blog/computervision/700.html
какая разница между вашей установкой и описанной в ссылке.
Paramon

Tur комментирует...
Этот комментарий был удален автором.
Tur комментирует...

Андрей, у меня такая задача: над конвейером по которому движутся таблетки висит камера. По фото требуется отбраковать таблетки по контуру и цвету. т.е. могут встречаться осколки таблеток или таблетки иной формы и цвета.
Я программировал на матлабе, но как выяснилось он очень медленный. Думаю перейти на С и opencv.
Я на с не программировал. Потяну ли? Мне требуется помощь в написании первой программы и инсталляции OpenCV.
А не понимаю я с самого начала и капитально.
У меня win7 64 bit
Я загрузил OpenCV отсюда http://sourceforge.net/projects/opencvlibrary/?source=dlp и раскрыл в С:\OpenCV\

Собственно инсталляции OpenCV не происходит и не возникает картинка которую Вы показали с самого начала.

Я не понимаю здесь http://locv.ru/wiki/1.6_%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_%D0%B8_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0
где именно дописывать OpenCV_Folder\include\opencv
т.е. где каталоги подключения в VC++, у меня он на английском.
Неясно также нужен ли мне QT, хотя бы с VC++ и OpenCV разобраться.

Андрей, пожалуйста помогите мне сделать первые шаги. На правильном ли я пути?

Tur комментирует...

C Include Directories разобрался, а с Source Directories нет, т.к. в моей папке C:\OpenCV\ нет подпапки src, т.е. таких подпапок много в разных местах. С каталогами библиотек тоже неясно, т.к. много есть папок lib. Я поставил одну: C:\OpenCV\3rdparty\lib
но есть и другие, напр, C:\OpenCV\build\x64\vc10\lib

Андрей, может быть то, что я пишу здесь неуместно, здесь же должны быть комментарии, а у меня одни вопросы.

На всякий случай мой мейл: tur991@gmail.com

Анонимный комментирует...

Добрый день. Всё делаю по мануалу, после конфигурации вижу ошибку вот такую
http://s017.radikal.ru/i424/1211/13/83d559e318fb.jpg

В чём может быть дело? С Уважением, Иван.

Анонимный комментирует...

доброго дня!
такое дело, но комп перезагружается после нажатия на Ф6 (
и еще нет каталогов VC++ (они доступны через страницу какую то..) у меня VS2010

ян

g66738 комментирует...

Афтар, без CMake никак не обойтись? Ошибка: "Error in configuration process, project files may be invalid"

Илья комментирует...

Привет!
пытаюсь использовать

/*test slot*/ void playCapture(const QString &path)
{
cv::VideoCapture capture( path.toStdString() );
if( !capture.isOpened() ) return;

....код......
}


В общем все время попадаю на return....путь правильный....библиотека собрана и работает тоже норм, прописаны все пути, до этого работал с различными фильтрами, кучей примеров из различных книг как по opencv так и по opencv2 и все примеры которые здесь на сайте были работали.....

Что происходит при инициализации объекта cv::VideoCapture студия выдает сообщение

Loaded 'D:\Projects\opencv\testOCV3\Win32\Debug\opencv_ffmpeg247.dll' Binary was not build with debug information.
Unloaded 'D:\Projects\opencv\testOCV3\Win32\Debug\opencv_ffmpeg247.dll'

Т.е почему то не загружается библиотека...по названию я так понимаю она отвечает за работу с кодеками.....
Файл формата avi

Да все dll которые тянет за собой проект, и + эту самую opencv_ffmpeg247.dll, я закинул в сам проект (где exe)

Анонимный комментирует...

А можно все это проделать для OpenCV 1.1

Анонимный комментирует...

Добрый день!
Я скачал готовый проект. В проект включен все библиотеки. Но ошибка выдает на все идентификаторы. Например "CVV_IMAGE" идентификатор не определен. Помогите как решить. Пожалуйста

Анонимный комментирует...

хм..

Анонимный комментирует...

Добрый у Вас хорошо получилось обьяснить как установить все это дело, БОЛЬШОЕ СПАСИБО! а подскажите где найти следующию информацию как работать дальше?

Хлуденьков Владимир комментирует...

Ставил OpenCV 2.4.11 на VS2010. Там действительно пришлось поработать.

Отправить комментарий