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

gavrilovalex

Пользователи
  • Количество публикаций

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О gavrilovalex

  • Звание
    Новичок
  1. Проблема линковки OpenCV в QT

    Возникла такая проблема. Пытаюсь подключить к QT-проекту библиотеку OpenCV 2.3 - проделываю стандартный набор действий 1. в .pro файл добавляю пути к файлам библиотеки и хидерам: Код: INCLUDEPATH += C:\\LIBRS\\OpenCV2.3\\build\\include LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_calib3d230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_contrib230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_core230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_features2d230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_flann230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_gpu230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_highgui230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_imgproc230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_legacy230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_ml230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_objdetect230.dll.a LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_video230.dll.a 2. В переменную Path прописываю путь к dll-кам: Код: C:/LIBRS/OpenCV2.3/build/x86/mingw/bin 3. А вот собственно тестовый main файл: Код: #include "opencv2/opencv.hpp" int main() { cv::Mat image = cv::imread("C:/pictures/img1.jpg"); cv::imshow("Window", image); cv::waitKey(0); return 0; } В итоге выводится вот такая штука: Код: 11:02:48: Запускается: «C:\QtSDK\mingw\bin\mingw32-make.exe» C:/QtSDK/mingw/bin/mingw32-make.exe -f Makefile.Debug mingw32-make.exe[1]: Entering directory `C:/QtSDK/PROJECTS/testnew/TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________' g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"..\..\..\Desktop\Qt\4.8.1\mingw\include\QtGui" -I"..\..\..\Desktop\Qt\4.8.1\mingw\include" -I"..\..\..\..\LIBRS\OpenCV2.3\build\include" -I"..\..\..\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"debug" -I"..\TNT" -I"." -I"..\..\..\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o debug\main.o ..\TNT\main.cpp g++ -mthreads -Wl,-subsystem,windows -o debug\TNT.exe debug/main.o -L"c:\QtSDK\Desktop\Qt\4.8.1\mingw\lib" -lmingw32 -lqtmaind C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_calib3d230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_contrib230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_core230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_features2d230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_flann230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_gpu230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_highgui230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_imgproc230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_legacy230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_ml230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_objdetect230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_video230.dll.a -lQtGuid4 -lQtCored4 mingw32-make.exe[1]: Leaving directory `C:/QtSDK/PROJECTS/testnew/TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________' debug/main.o: In function `main': C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../TNT/main.cpp:6: undefined reference to `cv::imread(std::string const&, int)' C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../TNT/main.cpp:7: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)' C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../TNT/main.cpp:7: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)' C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../TNT/main.cpp:8: undefined reference to `cv::waitKey(int)' debug/main.o: In function `~Mat': C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../../../../LIBRS/OpenCV2.3/build/include/opencv2/core/mat.hpp:297: undefined reference to `cv::fastFree(void*)' debug/main.o:C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../../../../LIBRS/OpenCV2.3/build/include/opencv2/core/mat.hpp:381: undefined reference to `cv::Mat::deallocate()' collect2: ld returned 1 exit status mingw32-make.exe[1]: *** [debug\TNT.exe] Error 1 mingw32-make.exe: *** [debug] Error 2 11:02:50: Процесс «C:\QtSDK\mingw\bin\mingw32-make.exe» завершился с кодом 2. Возникла ошибка при сборке проекта TNT (цель: Desktop) Во время выполнения сборки на этапе «Сборка» Получается, что компилятор не может прочитать dll-ки... И что самое интересное, до этого у меня все нормально работало. Вот вчера решил продолжить работу над проектом, попробовал пересобрать, ничего в нем не меняя, и вот такие ошибки появились. Чего я только не пробовал: и винду переустанавливал, и OpenCV вручную пересобирал, пробовал разные версии OpenCV (от 2.2 до 2.4.1) и dll-ки к исходникам кидал - все то же самое... Подскажите, что случилось-то???
  2. Файл main.exe запускается нормально, все работает. А вот когда пытаюсь собрать проект из исходников, сам код компилируется, но в процессе работы возникает ошибка: OpenCV Error: Assertion failed (type == v2.type() && type == icovar.type() && sz == v2.size() && len == icovar.rows && len == icovar.cols) in unknown function, file c:\Users\vp\work\ocv\opencv\modules\core\src\matmul.cpp, line 2172 Эта ошибка вылезает при расчете расстояния махаланобиса. Конкретно в функции GetProfDist() файла asm.cpp: static double GetProfDist (const IplImage* SearchImgs, const int iPoint, const int ix, const tAsmLev &AsmLev, const SHAPE &Shape) { const unsigned iSub = 0; cv::Mat Prof(1, AsmLev.Profs[iPoint][iSub].cols,CV_64F); Get1dProf(Prof, iPoint, ix); double dist = cv::Mahalanobis(Prof, AsmLev.Profs[iPoint][iSub], AsmLev.Covars[iPoint][iSub]); return dist; } В чем причина? Смущает то, что аргументы SearchImgs и Shape в теле функции не используются. Проект очень интересный, хочу его расширить до Active Apperance и прикрутить идентификацию по лицу. Но хоьелось бы до конца с этими исходниками разобраться с минимальными затратами времени))))
  3. Есть два вопроса по проекту: 1. В stasm выделяются 68 особых точек, а сколько здесь, так же? Судя по маске, их меньше. 2. Как получить координаты этих особых точек? В stasm такая возможность есть, а как в этом проекте?
×