Связывание QtCreator && OpenCv - PullRequest
1 голос
/ 19 декабря 2011

У меня проблема с подключением библиотеки из opencv (2.3.1) и я не могу найти способ ее решить .. Я использую qtCreator с mingw и встроенными динамическими библиотеками vc10. Итак, вот что я сделал до сих пор:

.pro файл:

TEMPLATE = app
INCLUDEPATH += "E:/opencv/build/include/"
INCLUDEPATH += "E:/opencv/build/include/opencv/"
INCLUDEPATH += "E:/opencv/build/include/opencv2/"

INCLUDEPATH += $$PWD/../opencv/build/x86/vc10
DEPENDPATH += $$PWD/../opencv/build/x86/vc10

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_core231
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_core231d
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_highgui231
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_highgui231d
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_imgproc231
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_imgproc231d
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_calib3d231
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../opencv/build/x86/vc10/lib/ -lopencv_calib3d231d
...

Я протестировал приложение, использующее библиотеки highgui из opencv, и оно скомпилировалось и работало хорошо, но когда я пытаюсь использовать cvPyrDown (из imgproc_c.h), оно компилируется, но не может правильно загрузить библиотеку, с которой он "неожиданно завершает работу" код -1073741515. Я не понимаю, почему это так ... как вы можете видеть из файла .pro, я связал imgproc libs точно так же, как highgui, но он все равно не будет работать!
Есть предложения?

Редактировать

Хорошо, проблема в том, что Visual Studio создает библиотеки с соглашениями об именах, отличными от g ++, и поэтому это не сработает. Если это правда, я все еще не могу объяснить, почему это работает с библиотеками highgui. идеи?

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Разве вы не должны использовать версию Qt для MSVC?

0 голосов
/ 23 декабря 2011

Какая версия Opencv это?Я предлагаю попробовать последнюю версию 2.3 и использовать CMake вместо файлов .pro, что является системой сборки для всего проекта.

Затем вы просто файл-> open-project на CMakeLists.txt, и вы можете простопосмотрите, как создаются примеры с CMake.

Если этот является последним, то 1) highgui использует QT, поэтому имеет смысл, что он может играть лучше с создателем qt и 2) сборка с .pro на окнах может быть непроверена;неизбежная потребность в CMake не удивительна.

Редактировать : Посмотрите на файлы CMakeLists.txt для библиотек ....

# CMakeLists.txt for /modules/highgui
 #YV
if (HAVE_QT)
if (HAVE_QT_OPENGL)
    set(QT_USE_QTOPENGL TRUE)
endif()
INCLUDE(${QT_USE_FILE})

SET(_RCCS_FILES src/window_QT.qrc)
QT4_ADD_RESOURCES(_RCC_OUTFILES ${_RCCS_FILES})

SET(_MOC_HEADERS src/window_QT.h )
QT4_WRAP_CPP(_MOC_OUTFILES ${_MOC_HEADERS})

set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} ${QT_LIBRARIES} ${QT_QTTEST_LIBRARY})
set(highgui_srcs ${highgui_srcs} src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES} )
endif()

if(WIN32)
   if(NOT HAVE_QT)
      set(highgui_srcs ${highgui_srcs} src/window_w32.cpp)
   endif()
  set(highgui_srcs ${highgui_srcs} src/cap_vfw.cpp src/cap_cmu.cpp   src/cap_dshow.cpp)
   if(HAVE_MIL)

    set(highgui_srcs ${highgui_srcs} src/cap_mil.cpp)
endif()
endif()

if(UNIX)
if(NOT HAVE_QT)        
    if(HAVE_GTK)
        set(highgui_srcs ${highgui_srcs} src/window_gtk.cpp)
    endif()
endif()
 ....
endif()

Но "imgprocCMakeLists.txt не выполняет каких-либо специальных проверок ... он просто передает всю основную библиотеку opencv:

 define_opencv_module(imgproc opencv_core)
...