Технический форум по робототехнике.
Danik » 02 фев 2009, 23:05
Всем драсти. Начал изучать OpenCV и на первом же шаге споткнулся. Вроде настроил VC++, создал пустой проект и набрал (из примера)...
Код: Выделить всё • Развернуть #include "stdafx.h" #include <cv.h> #include <cxcore.h> #include <highgui.h> int main(int argc, char* argv[]) { IplImage *img = cvLoadImage("d:\\1.bmp"); cvNamedWindow("Image",1); cvShowImage("Image", img) cvWaitKey(); cvDestroyWindow("Image"); cvReleaseImage(&img); return 0; }
... а в ответ:
Код: Выделить всё • Развернуть Compiling... 89.cpp c:\program files\microsoft visual studio\vc98\include\cv.h(1055) : error C2061: syntax error : identifier 'CvPoint2D64d' c:\program files\microsoft visual studio\vc98\include\cv.h(1078) : error C2061: syntax error : identifier 'CvPoint2D64d' c:\program files\microsoft visual studio\vc98\include\cv.h(1097) : error C2061: syntax error : identifier 'CvPoint3D64d' c:\program files\microsoft visual studio\vc98\include\cv.h(1112) : error C2061: syntax error : identifier 'CvPoint3D64d' c:\program files\microsoft visual studio\vc98\include\cvcompat.h(578) : error C2065: 'cvFindChessboardCorners' : undeclared identifier c:\program files\microsoft visual studio\vc98\include\cvcompat.h(579) : error C2065: 'CV_CALIB_CB_ADAPTIVE_THRESH' : undeclared identifier c:\program files\microsoft visual studio\vc98\include\cvcompat.h(603) : error C2065: 'cvCalibrateCamera2' : undeclared identifier c:\program files\microsoft visual studio\vc98\include\cvcompat.h(656) : error C2065: 'cvFindExtrinsicCameraParams2' : undeclared identifier c:\program files\microsoft visual studio\vc98\include\cvcompat.h(695) : error C2065: 'cvRodrigues2' : undeclared identifier c:\program files\microsoft visual studio\vc98\include\cvcompat.h(730) : error C2065: 'cvProjectPoints2' : undeclared identifier c:\program files\microsoft visual studio\vc98\include\cvcompat.h(761) : error C2065: 'cvUndistort2' : undeclared identifier c:\program files\microsoft visual studio\vc98\include\cvcompat.h(837) : error C2664: 'cvFree' : cannot convert parameter 1 from 'struct CvGraphScanner ** ' to 'void ** ' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe. 89.exe - 12 error(s), 0 warning(s)
Подскажите plz чево делать?...
=DeaD= » 02 фев 2009, 23:32
найти где описываются не найденные типы и заинклюдить файл заголовков соответствующий.
Danik » 03 фев 2009, 12:40
Скачал новый OpenCV и оказалось, что некоторые мои старые файлы меньше весят, все заменил и проблема ушла
, НО не так все просто
...
Код: Выделить всё • Развернуть Compiling... 89.cpp c:\progra~1\opencv\cv\include\cvcompat.h(837) : error C2664: 'cvFree' : cannot convert parameter 1 from 'struct CvGraphScanner ** ' to 'void ** ' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe. 89.exe - 1 error(s), 0 warning(s)
Вопрос:
Почему в готовых файлах возникает такая лажа?
=DeaD= » 03 фев 2009, 12:59
Ответ: Скорее всего потому что вы им передаёте что-то не то
Danik » 03 фев 2009, 14:50
Я ничего не передаю. Если убрать весь код и оставить только все include, то результат тот же:
Код: Выделить всё • Развернуть #include "stdafx.h" #include <cv.h> #include <cxcore.h> #include <highgui.h> #include <cvtypes.h> int main(int argc, char* argv[]) { return 0; } ---------------------- Compiling... 89.cpp c:\progra~1\opencv\cv\include\cvcompat.h(837) : error C2664: 'cvFree' : cannot convert parameter 1 from 'struct CvGraphScanner ** ' to 'void ** ' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Error executing cl.exe. 89.exe - 1 error(s), 0 warning(s)
А так как подключены только скаченные файлы, то они сами между собой ...?
Сколько весит ваш "cvcompat.h"? Мой 4,08 КБ.
Myp » 03 фев 2009, 14:53
Danik писал(а): Сколько весит ваш "cvcompat.h"? Мой 4,08 КБ.
если уж приспичило сравнить файл то давай размер в байтах
ато твой округлённый размер ни о чём не говорит
Danik » 04 фев 2009, 13:52
41 737 байт.
С проблемой разобрался.
Вчера пытался подключить к Builder С++ 6. Подключал так же как к VC и опять началось...
Код: Выделить всё • Развернуть Build [Linker Error] Unresolved external '_cvLoadImage' referenced from C:\~\UNIT1.OBJ [Linker Error] Unresolved external '_cvNamedWindow' referenced from C:\~\UNIT1.OBJ [Linker Error] Unresolved external '_cvShowImage' referenced from C:\~\UNIT1.OBJ [Linker Error] Unresolved external '_cvWaitKey' referenced from C:\~\UNIT1.OBJ [Linker Error] Unresolved external '_cvDestroyWindow' referenced from C:\~\UNIT1.OBJ [Linker Error] Unresolved external '_cvReleaseImage' referenced from C:\~\UNIT1.OBJ
Где-то вычетал, но уже не помню где, что надо чего-то конвертить.
Вопрос: что и как, а если не надо, то как подключить?
=DeaD= » 04 фев 2009, 15:11
надо конвертить библиотеки
http://opencv.willowgarage.com/wiki/C%2B%2BBuilder - тут вроде написано как.
Danik » 04 фев 2009, 21:13
Круто!!! Все сделал, все работает. Спасибо за ссылку.
TrashVigor » 06 май 2009, 14:09
--------------------Configuration: contours - Win32 Debug-------------------- Linking... D:\VC98\LIB\cv.lib : fatal error LNK1136: invalid or corrupt file Error executing link.exe. contours.exe - 1 error(s), 0 warning(s) Че это значит? Библиотеку конвертировал, только она что то в размере уменьшилась.
=DeaD= » 06 май 2009, 14:23
Чего-то вы не так конвертили
даже разбираться не ясно как - может разве права к ней не так выставлены или еще чего?
TrashVigor » 06 май 2009, 14:42
Может я что то не так сделал? Делал так: 1. Поставил VC++6. 2. Поставил OpenCV 1.1. 3. Переконвертировал конвертором библиотеки( cv.lib, highgui.lib и т.д.) 4. Залил их в папку вместе с либами VC++. 5. Залил инклоуды. 6. Перезагружаю комп. 7. Врубаем примерчик ( у меня) D:\Program Files\OpenCV\samples\c\ 8. Билдим! Что, не так делал? Еще нащел готовые конверторные библиотеки. Они тоже маловато весят 16кб, а в неконверторные 88кб.
=DeaD= » 06 май 2009, 14:47
Вроде конвертить надо только в Borland Builder'е?
TrashVigor » 06 май 2009, 15:03
Действительно не надо. Хорошая новость на сеходня от DEAD'а
. Там еще надо было в проэкт включить их все.
Тока вот не могу понять, каким макаром перевести это все на контроллер?
=DeaD= » 06 май 2009, 15:19
Кого "всё это" на контроллер? И на какой контроллер? OpenCV на AVR не надо пытаться перенести только!