roboforum.ru

Технический форум по робототехнике.

OpenCV и MSVS2008

OpenCV и MSVS2008

РЭНТ » 02 июн 2009, 22:18

Привет народ!!!)
Начал осваивать OpenCV, понакочал кучу всяких мануалов, но как говорится без совета бывалых людей не обойтись)
Итак, в программировании я вроде не полный ноль, но и далеко не профи...
Решил откомпилить contours.c из сэмплов, вроде какие-то библиотеки понаподключал...вот только не уверен что правельные и туда :) В общем выдает вот такую ботву: Вылетает табличка: энэйбл ту старт программ путь к exe-шнику....и вот:
1>------ Build started: Project: Zrenie, Configuration: Debug Win32 ------
1>Linking...
1>contours.obj : error LNK2019: unresolved external symbol _cvShowImage referenced in function _on_trackbar
1>contours.obj : error LNK2019: unresolved external symbol _cvWaitKey referenced in function _main
1>contours.obj : error LNK2019: unresolved external symbol _cvCreateTrackbar referenced in function _main
1>contours.obj : error LNK2019: unresolved external symbol _cvNamedWindow referenced in function _main
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
1>D:\Code\Zrenie\Debug\Zrenie.exe : fatal error LNK1120: 5 unresolved externals
1>Build log was saved at "file://d:\Code\Zrenie\Zrenie\Debug\BuildLog.htm"
1>Zrenie - 6 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped =========

Re: OpenCV и MSVS2008

galex1981 » 02 июн 2009, 22:36

Это значит что компилятор не нашел какую то библиотеку, функции которой он перечисляет, смотри что за библиотека

Re: OpenCV и MSVS2008

РЭНТ » 02 июн 2009, 23:16

Ну насколько я понял эти функции в Highgui (Модуль для ввода/вывода изображений и видео, создания пользовательского интерфейса) и я вродь прописал ее и CV тоже...прописывал через:

project properties > Linker > General > Additional Library Directories

project properties > Linker > Input > Additional Dependencies

или напутал чего? :oops:

Re: OpenCV и MSVS2008

galex1981 » 02 июн 2009, 23:50

Я обычно делаю так: если подключаю в проек сторонние библиотеки то смотрю чтоб были подключены и *.lib файлы, скорее всего который(е) у тебя не подключен(ы), если компилятор сам не определяет пути я их вручную в свойствах проекта прописываю.

Re: OpenCV и MSVS2008

=DeaD= » 03 июн 2009, 08:12

2galex1981: Вроде .lib - это для борланда, тут .dll ?

Предлагаю сначала просто попробовать все .dll-ки и .h-файлы кинуть в папку с проектом.

Еще может быть тема с нестабильной версией OpenCV, лучше брать 1.0, которую еще интел вёл.

Но похоже тут просто не может найти библиотеки.

Re: OpenCV и MSVS2008

galex1981 » 03 июн 2009, 09:08

При компиляции Студия идет *.lib файлы, а потом при запуске уже *.dll

Re: OpenCV и MSVS2008

РЭНТ » 03 июн 2009, 18:43

Хех...ну вроде бы с все библиотеки подключил как это делается в VS2008 нашел здесь http://www.scribd.com/doc/13419607/Open ... s-20081010 Но теперь выдает вот такое:

1>------ Build started: Project: Zrenie, Configuration: Debug Win32 ------
1>Linking...
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
1>D:\Code\Zrenie\Debug\Zrenie.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://d:\Code\Zrenie\Zrenie\Debug\BuildLog.htm"
1>Zrenie - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Может посоветуете чего.... :)

Re: OpenCV и MSVS2008

galex1981 » 03 июн 2009, 21:41

Такое ощущение, что у тебя реально проект MFC, а в свойствах проекта не MFC проект, или наоборот...

Re: OpenCV и MSVS2008

РЭНТ » 03 июн 2009, 21:56

Большое спасибо всем за советы!) Заработало!!!)Рад до безобразия)))

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

Итак, думаю говорить что, установка MS VS2008 и OpenCV обязательна, не нужно ) OpenCV версии 1.0 я установил в директорию C:\Program Files\OpenCV.

Затем открываем VS2008 лезем в Tools -> Options,в открывшемся окне выбираем Projects and Solutions -> VC++ Directories, далее справа во вкладке Show directories for выбираем Include files и добавляем следующие пути:

C:\Program Files\OpenCV\cv\include
C:\Program Files\OpenCV\cxcore\include
C:\Program Files\OpenCV\otherlibs\highgui
C:\Program Files\OpenCV\cvaux\include
C:\Program Files\OpenCV\ml\include
C:\Program Files\OpenCV\otherlibs\_graphics\include
C:\Program Files\OpenCV\otherlibs\_graphics\include\jasper
C:\Program Files\OpenCV\otherlibs\cvcam\include

Выбираем во вкладке Show directories файлы библиотек Library files и опять прописываем пути:

C:\Program Files\OpenCV\lib
C:\Program Files\OpenCV\otherlibs\_graphics\lib

Опять лезем во вкладку Show directories и выбираем Source files ну и снова…:

C:\Program Files\OpenCV\cv\src
C:\Program Files\OpenCV\cvaux\src
C:\Program Files\OpenCV\cxcore\src
C:\Program Files\OpenCV\otherlibs\highgui
C:\Program Files\OpenCV\otherlibs\_graphics\src
C:\Program Files\OpenCV\ml\src
C:\Program Files\OpenCV\otherlibs\cvcam\src\windows

Ну вот, с этим все) Теперь создаем новый проект File->New->Project… В появившемся окне выбираем Win32 Console Application в поле Name даем имя своему проекту и жмем OK. В появившемся окне переходим во вкладку Application Setting, убеждаемся что стоит галка Precompiled header это говорит о том, что к проекту будут добавлены заголовочные файлы, жмем Finish.

Далее нужно подключить к проекту файлы библиотек, для этого лезем в Project и выбираем самую нижнюю вкладку …название вашего проекта…Properties…Можно просто нажать Alt+F7).

В открывшемся окне слева выбираем Linker -> Input затем справа в пункте Additional Dependencies через пробел прописываем следующие файлы через пробел cxcore.lib cv.lib highgui.lib можно еще прописать ml.lib но я не прописывал. Далее, слева выбираем General и пишем справа в пункте Additional Library Directories вот такие пути: "C:\Program Files\OpenCV\bin";"C:\Program Files\OpenCV\lib". Все, жмем ОК)

Теперь осталось добавить код программы и откомпилить, я например добавил такой:

Код: Выделить всёРазвернуть
#include "stdafx.h"
#include "highgui.h"

int _tmain(int argc, _TCHAR* argv[])
{
   IplImage* img = cvLoadImage("D:\BlonD.jpg");
   cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);
   cvShowImage("Example1",img);
   cvWaitKey(0);
   cvReleaseImage(&img);
   cvDestroyWindow("Example1");
   return 0;
}


Программа из книги OReilly Learning OpenCV загружает изображение из файла.

Ну!Приятной компиляции!)

Re: OpenCV и MSVS2008

Bober-Maniac » 28 мар 2010, 23:44

Все сделал по инструкции, но при компиляции вылазиет ошибка "Приложению не удалось запуститься, поскольку cxcore100.dll не был найден. Повторная установка приложения может исправить эту проблему". Хотя этот файл лежит в
C:\Program Files\OpenCV\bin
Как это исправить?

Re: OpenCV и MSVS2008

Bober-Maniac » 28 мар 2010, 23:48

При компиляции вылазит ошибка "Приложению не удалось запуститься, поскольку cxcore100.dll не был найден. Повторная установка приложения может исправить эту проблему."

Re: OpenCV и MSVS2008

=DeaD= » 03 апр 2010, 15:02

Попробуйте скопировать в каталог проекта, бывает иногда еще и такой косяк.

Re: OpenCV и MSVS2008

CapBuran » 01 июл 2011, 16:16

У меня такая ошибка была, когда не ту разрядность указал =)

Re: OpenCV и MSVS2008

DreadlockEugene » 29 июл 2011, 22:38

Может кто-нибудь запишет туториал как подключить OpenCV (хоть какую-нибудь версию).. я уже полторы недели не могу ничего сделать

Re: OpenCV и MSVS2008

RootAdmin » 27 янв 2014, 16:22

Система - win7 64
С++ VS2008 express
OpenCV 2.4.8

Проблем с настройкой среды - нет. По крайней мере мне кажется. Во всяком случае изображение с камеры получаю.
Проблема с именами окон....
Код: Выделить всёРазвернуть
//#include <iostream>
#include "cv.h"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;
using namespace std;


int main(int, char**)
{
    VideoCapture cap(0);
    if(!cap.isOpened()) return -1;

    Mat frame, edges;
   Mat image;

   std::cout << "Test_string: " << "Start" << std::endl;
   //namedWindow(Wname,1);
   //namedWindow("000000",1);
   cap >> frame; //Получим кадр
   namedWindow("abcdef",1); //Новое окно
   imshow("abcdef", frame);

   
   namedWindow("444444",1);//Новое окно
   cvMoveWindow( "XSQq444444", 1, 1 ); //Перемещаю окно. Влево вверх.
   
   for(;;)
    {
        if(waitKey(30) >= 0) break;
    }
    return 0;
}

Окна.jpg
Скрин с окнами.

Создаю namedWindow("abcdef",1); //Новое окно! Оно появляется, но имя - дополняется случайными символами. Такое впечатление что указатель неверный.
Пробую вывести в него картинку imshow("abcdef", frame); - создается новое окно, с другим именем.

Для теста открываю еще одно. С именем "444444". Пробую его переместить. Если делаю cvMoveWindow( "444444", 1, 1 ); - как оно и должно быть - не работает, а если cvMoveWindow( "XSQq444444", 1, 1 ); - перемещается...
ЧЯДНТ?


cron
Rambler\'s Top100 Mail.ru counter