首页 文章

尝试从Github编译OpenCV QT代码时出错

提问于
浏览
0

我是OpenCV / QT环境的新手(以及一般的编程环境) . 我正在尝试运行此代码:

https://github.com/Terranlee/Realtime_EVM

有人可以一步一步地告诉我需要安装/编译以便在Windows 10上运行此脚本吗?不确定要安装什么版本或者它是否重要 .

我已经尝试过这里的指示(https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows),但我不断收到'undefined reference'错误,这意味着我不太确定要编辑什么以及如何编辑 .

在此先感谢,请原谅我的noobieness!

-Jay


回复回答

我使用以下命令使用维基指南使用CMake编译OpenCV:

mingw32-make -j 8

mingw32-make install

完成后,我打开Qt Creator并打开Github EVM代码,方法是下载zip文件然后解压缩并打开rvm.pro文件 .

没有做任何更改,我试图构建代码,我的第一个错误是它找不到“opencv_world310.dll”库 .

我搜索了它,并在“E:\ opencv \ build \ x64 \ vc14 \ bin”目录中找到了本地文件,因此我编辑了rvm.pro文件以查找该目录,如下所示:

win32 {
    OPENCVFOLDER = E:/_CODE_/_EXTERNAL_/OpenCV/my_git_build/
    OPENCVVERSION = 310
    INCLUDEPATH += E:\opencv\build\install\include
    INCLUDEPATH += E:\opencv\build\x64\vc14\lib


CONFIG(release, debug|release) {
    LIBS += -LE:\opencv\build\x64\vc14\lib
    LIBS += -lopencv_world$${OPENCVVERSION}
}
CONFIG(debug, debug|release) {
    DEFINES += DEBUG_MODE
    LIBS += -LE:\opencv\build\x64\vc14\lib
    LIBS += -lopencv_world$${OPENCVVERSION}d
}

这摆脱了最初的错误,但之后我得到了几个“未定义的引用”问题:

C:\ Eulerian Real-Time OpenCV build \ Realtime-Video-Magnification-master \ build-rvm-Desktop_Qt_5_9_0_MinGW_32bit-Debug \ debug \ main.o:-1:在函数`ZN2cv6StringD1Ev'中:

E:\ opencv \ build \ include \ opencv2 \ core \ cvstd.hpp:664:错误:未定义引用`cv :: String :: deallocate()'

C:\ Eulerian Real-Time OpenCV build \ Realtime-Video-Magnification-master \ build-rvm-Desktop_Qt_5_9_0_MinGW_32bit-Debug \ debug \ main.o:-1:在函数`ZN2cv6StringaSERKS0_'中:

E:\ opencv \ build \ include \ opencv2 \ core \ cvstd.hpp:672:错误:未定义引用`cv :: String :: deallocate()'

C:\ Eulerian Real-Time OpenCV build \ Realtime-Video-Magnification-master \ src \ main \ threads \ CaptureThread.h:42:error:undefined reference to`cv :: VideoCapture :: ~VideoCapture()'

......这些问题大约有50个,所以我不会全部列出 .

这只是正确引用库的问题吗?

总之,我只是尝试使用Qt Creator,mingGW,CMake和OpenCV来运行Github代码 . 请告诉我如何编辑.pro文件以正确链接库 .

我的OpenCV在e:\ opencv中

再次感谢您的帮助和耐心!

-Jay

1 回答

  • 0

    关于您目前采取的步骤的信息非常少 . 你想使用Visual Studio / mingw吗?以下是一些指示:

    • 您可以使用Qt Creator打开专业文件

    • 您可以使用 qmake -spec <spec of the Visual Studio to use> -tp vc 生成与Visual Studio兼容的解决方案,以选择 spec 参见this答案 .

    使用其中任何一个都应该设置Qt includes / libraries .

    关于这个项目的坏处是,如果你看一下 .pro 文件,它会明确地使用Linux友好的包含路径:

    INCLUDEPATH += /usr/local/include \
                    /usr/local/include/opencv \
                   /usr/local/include/opencv2
    
    LIBS += `pkg-config --libs opencv` -ldl
    

    因此,如果您使用的是Qt Creator,则必须在Visual Studio内或 .pro 文件中添加包含/库路径到OpenCV . 例如,您在Qt / OpenCV上的帖子中使用的链接具有Windows友好链接:

    LIBS += D:\opencv-build\bin\libopencv_core320.dll
    LIBS += D:\opencv-build\bin\libopencv_highgui320.dll
    LIBS += D:\opencv-build\bin\libopencv_imgcodecs320.dll
    LIBS += D:\opencv-build\bin\libopencv_imgproc320.dll
    LIBS += D:\opencv-build\bin\libopencv_features2d320.dll
    LIBS += D:\opencv-build\bin\libopencv_calib3d320.dll
    

    所以请详细解释到目前为止你做了什么,以及缺少哪些参考文献(Qt / OpenCV) .

相关问题