Jump to content
Compvision.ru
Smorodov

Установка и первый проект OpenCV в картинках.

Recommended Posts

Вопросы\уточнения:

1.возможно ли запороть уже работающую программу, использующую OpenCV№.№ если обновиться через SVN?

2.после каждого обновления надо ребилдить либы?

3.Что будет если в VS2008 в VC++ Directories будет указано

и

C:\OpenCV2.1\include\opencv

и

C:\Program Files\OpenCV2.2\include

C:\Program Files\OpenCV2.2\include\opencv

(а то у меня походу от этого unresolved external symbol лезут)

и еще в VS2010 VC++ Directories я так понимаю вынесены в свойства проекта так что будет без разницы,т.к. все привязано не к студии, а к самому проекту?

4.Не написано насчет PATH надо ли ее вообще использовать? если посмотреть cmd->path то у меня включено C:\OpenCV2.1\bin и C:\Program Files\OpenCV\bin которой вообще нет и которая видимо была создана CMake, достаточно ли включить например

C:\OpenCV2.1 или C:\? или в папке должны лежать все связанные с библиотекой dll-ки? (как дебаг так и релиз? для 2.2 они почему то разделились *_220d.dll и *_220.dll соответственно)

5.Обязательно ли указывать так заголовки?

#include <opencv2/objdetect/objdetect.hpp>

или есть какой то способ полегче?

6.и еще может глупый вопрос(я с этим не очень знаком), но можно ли как то использовать source код в своем проекте, не компилирую все в либы?(скажем из include папки взять *.h и подключить всю папку с сорцами .cpp) (и зачем это нужно готовить либы вообще? только появляются зависимости под студию 2008\2010, компилятор или ИДЕ)

7. Еще шаг 9-10 не ясен там и там мы подключаем одни и те же либы?

  • Like 2

Share this post


Link to post
Share on other sites

1) Существующая программа может перестать компилироваться. Правда у меня такого с появления версии 2.2 не случалось, но если сменится номер версии, то скорее всего надо будет перенастраивать. Указать пути к библиотекам,сами библиотеки и пути к заголовкам, а так же проверить чтобы правильно подключались заголовки (#include<>).

2) Это по желанию. Но пока библиотеки не перестроены, будут использоваться те, что были построены в прошлый раз. И обновленные заголовочники, что может вызвать проблемы, но в рамках одной подверсии этого обычно не случается.

3) Лучше оставить что то одно. В vs2008 можно пути указывать в Directories, а можно в самом проекте, как 2010 не знаю.

4) Пути, я думаю, лучше задавать явно не надеясь на PATH, хотя если там ничего лишнего нет, то почему бы и не использовать (я так не делал, могу ошибаться). ДЛЛки у меня лежат в c:\OpenCV-2.2.0\bin\Release\ и c:\OpenCV-2.2.0\bin\Debug\

Проект в конфигурации отладки будет использовать библиотtки с "d" в конце названия, в конфигурации релиза будут использованы библиотеки без "d". Для запуска программы DLL нужно скопировать в папку с экзешником.

5) Да. Это "фича" последних версий, и думаю она сохраниться дальше.

6) Opencv допускает статическую линковку (проект одним файлом без DLL), но для этого не нужно каждый раз компилировать библиотеку. Да, и компиляция библиотеки достаточно длительное дело. Именно для отвязывания от компиляторов и IDE и используется CMAKE. А конечному пользователю это не важно.

7) В 9) указываем пути , а 10) файлы. Да это касается одних и тех же либов.

PS: Спасибо за вопросы, это поможет соорудить более понятный мануал.

  • Like 1

Share this post


Link to post
Share on other sites

Привет.Кто нибудь подскажет как создать проект без исходного кода для передачи заказчику?Какие библиотеки нужно кинуть в папку с программой,что подключать?Использую visual c++2008 и open cv 2.1.

Share this post


Link to post
Share on other sites

Да, нужны будут только DLL и EXE.

Если вы отметили Build Package, то в директории win-install должны быть все необходимые дополнительные файлы.

могу в чем-то насчет win-instal ошибаться, независимое приложение компоновал достаточно давно.

Любой скомпилированный проект на С или С++ не нуждается в наличии исходного кода для запуска. Нужны только двоичные файлы и файлы с которыми работает сама программа. С и С++ в большинстве своем компиляторы, а не интерпретаторы.

Все зависимости программы можно посмотреть утилитой Dependency Walker.

Share this post


Link to post
Share on other sites

Еще не описан такой очевидный\неочевидный момент при сборке как set as start up project когда надо скомпилировать либы, походу надо выбирать BUILD_ALL, так же не понятно зачем там INSTALL и UNINSTALL проекты, может они выдают установщики? как это было в более ранних версиях? (названия писал по памяти opencv2.2 пока удалил,т.к. до конца не разобрался)

+при конфигурации Cmake не описаны хоть как то выбираемые опции, но может оно и не надо для мануала get started.

и да вроде бы если dll указать в PATH то не надо их кидать в папку с exe.

  • Like 1

Share this post


Link to post
Share on other sites

На следующей неделе напишу бету, с учетом накопленной критики и пожеланий :)

Share this post


Link to post
Share on other sites

А если у заказчика неустановлен opencv?Необходимо ли какие-то dll кидать в папку с exe?И при компиляции,какие свойства выставлять(может пути к библиотекам независимо от места расположения папки спроектом)?

Объясните пожалуйста для чайника как все сделать.Могу кинуть проект,если необходимо.

У себя все компилится и работает(в свойставх проекта прописано,что подключать).А вот как быть для того,чтобы создать запускаемую программку для того у кого неустановлен open cv?

Share this post


Link to post
Share on other sites

В папке с программой должны лежать все длл из директория Opencv\bin\release. Если запускаемый файл собран как релиз. Если собран отладочный, обычно их не поставляют заказчикам, то в папке с программой должны лежать все длл из папки Opencv\bin\debug.

И при запуске программа обычно пишет какой ей не хватает длл.

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

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

c:\Program Files\Microsoft Visual Studio 9.0\VC\redist\

а конкретно, по-моему, вот отсюда надо скопировать все файлы

c:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\

файл с расширением .manifest тоже нужен.

Share this post


Link to post
Share on other sites

Когда вы говорите

В папке с программой должны лежать все длл из директория Opencv\bin\release

то имеется ввиду,что проетк собран как у вас написано в теме:Установка и первый проект OpenCV в картинках?А то у меня open cv устанавливался так сказать с помощью экзешника,если не ошибаюсь и такой директории у меня нет в bin

Share this post


Link to post
Share on other sites

еще вопрос если я хочу править сорцы, то мне тогда надо либо подключать не либу, а сорцы или постоянно(после каждого изменения) их перекомпилировать в либу я правильно понимаю?

и еще если я пользуюсь либой, то я при дебаге не смогу ввойти в функцию по F10?

Share this post


Link to post
Share on other sites

С каким свойством нужно компилировать проект?В программе используются следующие заголовочные файлы

#include <cv.h>

#include <highgui.h>

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

Так какие длл нужно кинуть в папку с exe,чтобы заказчик мог запустить у себя без наличия open cv и возможно visual?нужно ли для этого заново собирать проект с cmake,если у меня уже установлен на компютере opencv и с явным указанием библиотек в свойствах среды все работает?

Share this post


Link to post
Share on other sites

Вопрос отпадает.Кому интересно.В "свойствах проекта-свойства конфигурации-компоновщик-ввод" на вкладке "дополнительные зависимости" написал:

cv210.lib

cxcore210.lib

highgui210.lib

cvaux210.lib

а в папку с exe-шником кинул

cv210.dll, cxcore210.dll,highgui210.dll, cvaux210.dll и затем перестроил проект.Кидаем папку на другой комп без open cv - запускаем exe-ура работает.А зависимости можно увидеть либо при debugger, либо при помощи отличной утилити

depends.exe.

  • Like 1

Share this post


Link to post
Share on other sites

Стоит добавить, что Cmake не любит русские символы.

Не совсем понятно, что происходит при запуске opencv.sln.

Также include файлы находятся не в тех местах, что указаны в инструкции.

Share this post


Link to post
Share on other sites

Стоит добавить, что Cmake не любит русские символы.

Не совсем понятно, что происходит при запуске opencv.sln.

Также include файлы находятся не в тех местах, что указаны в инструкции.

Про русские символы согласен.

Если можно, то поясните пожалуйста об include файлах.

В инструкции указаны пути к директориям include для каждого модуля.

Остальная часть пути указывается в директиве #include <> в листинге программы.

У меня с заголовочниками проблем нет. Может дело в разных версиях?

Share this post


Link to post
Share on other sites

Очень хорошо написано :)

Только немного оптимизирую для ленивых:

добавлять в .pro файл можно только

INCLUDEPATH += C:/OpenCV-2.2.0/include C:/OpenCV-2.2.0/include/opencv
LIBS += c:/OpenCV-2.2.0/GCCbin/lib/*.a[/code]

( Мои директории несколько отличаются )

PS: по поводу сборки из репозитария, вроде у меня была такая проблема. Решилась, насколько помню, путем скачивания новой версии GCC.

Share this post


Link to post
Share on other sites

Очень хорошо написано :)

Только немного оптимизирую для ленивых:

добавлять в .pro файл можно только

INCLUDEPATH += C:/OpenCV-2.2.0/include C:/OpenCV-2.2.0/include/opencv

LIBS += c:/OpenCV-2.2.0/GCCbin/lib/*.a

( Мои директории несколько отличаются )

PS: по поводу сборки из репозитария, вроде у меня была такая проблема. Решилась, насколько помню, путем скачивания новой версии GCC.

Спасибо! Учту, что лучше подключать вашим способом. А Вы не могли бы примерчик скинуть вывода IplImage* на форму Qt (скажем в QGraphicsView)?

Share this post


Link to post
Share on other sites

Спасибо! Учту, что лучше подключать вашим способом. А Вы не могли бы примерчик скинуть вывода IplImage* на форму Qt (скажем в QGraphicsView)?

Наши люди поработали уже над этим :)

http://locv.ru/wiki/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:OpenCV_%D0%B8_Qt

Share this post


Link to post
Share on other sites

Если можно, то поясните пожалуйста об include файлах.

В инструкции указаны пути к директориям include для каждого модуля.

Инструкция часть 3 пункт 8, пути к заголовочным файлам:

OpenCV-2.2.0/modules/core/include

OpenCV-2.2.0/modules/highgui/include и т.д. у меня почему-то не было.

Зато нашёл такие

OpenCV-2.2.0/include/opencv

OpenCV-2.2.0/include/opencv2

Наверно из-за того что новее версия.

Share this post


Link to post
Share on other sites

Инструкция часть 3 пункт 8, пути к заголовочным файлам:

OpenCV-2.2.0/modules/core/include

OpenCV-2.2.0/modules/highgui/include и т.д. у меня почему-то не было.

Зато нашёл такие

OpenCV-2.2.0/include/opencv

OpenCV-2.2.0/include/opencv2

Наверно из-за того что новее версия.

Сегодняшнее обновление из SVN.

post-1-0-73372700-1302199009_thumb.png

Там есть по крайней мере директория: opencv/modules/core/include

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Да, интересный нюанс. Я сразу и не подумал. Надо указать в следующей версии руководства.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×