2011-12-19 55 views
1

我有一個問題,從opencv鏈接庫(2.3.1),並且找不到解決方法。 我使用的是mingw和預構建的vc10 dynamic的qtCreator lib文件。 所以,這裏是我做了什麼至今:鏈接QtCreator && OpenCv

.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庫與h​​ighgui鏈接起來,但它仍然無法工作!
有什麼建議嗎?

編輯

好了,問題是,Visual Studio中不同的命名慣例除G創建庫++,這就是爲什麼它不會工作。如果這是真的,我仍然無法解釋爲什麼它與highgui庫工作..任何想法?

回答

0

哪個版本的Opencv是這樣的?我建議嘗試最新的2.3版本,並使用CMake代替.pro文件,這是整個項目的構建系統。

然後,您只需在CMakeLists.txt上打開文件 - >打開項目,您就可以看看CMake如何設置示例。

如果這個最新的,那麼1)highgui使用QT,所以它可能會發揮更好的qt創建者和2)在Windows上構建與.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() 

但 「imgproc」 的的CMakeLists.txt沒有做任何具體的檢查...只是傳遞降壓主OpenCV的lib目錄下:

define_opencv_module(imgproc opencv_core) 
+0

我使用的是最新版本的OpenCV(2.3.1)的。如果庫是使用msvc(使用另一個命名約定而不是g ++)構建的,highgui是否使用qt真的很重要?大概是 – elephantintheroom 2011-12-23 23:20:27

+0

。你應該真的用mingw重建opencv ......也可以使用cmake,而不是qmake ......這就是OpenCV所測試/開發的內容,如果你堅持使用qmake,你會爲自己埋下不必要的障礙。 – 2011-12-25 04:30:57

1

不應該使用Qt的MSVC版本嗎?

+0

的MinGW應該能夠處理它。(它的工作原理與highgui庫..) – elephantintheroom 2011-12-19 08:02:39