OpenCV 3.2.0、Visual Studio 2015、Windows 7

Posted

技术标签:

【中文标题】OpenCV 3.2.0、Visual Studio 2015、Windows 7【英文标题】:OpenCV 3.2.0, Visual Studio 2015, Windows 7 【发布时间】:2017-01-27 17:07:12 【问题描述】:

我在instructions here 之后在 Windows 7 上安装了预构建库 OpenCV 3.2.0,但在 Visual Studio 2015 中尝试使用它们时遇到错误。

变量OPENCV_DIR设置正确:

C:\>echo %OPENCV_DIR%
C:\OpenCV\Build\x64\vc14

C:\>dir %OPENCV_DIR%
 Le volume dans le lecteur C s'appelle OS
 Le numéro de série du volume est 1234-ABCD

 Répertoire de C:\OpenCV\Build\x64\vc14

27/01/2017  17:10    <REP>          .
27/01/2017  17:10    <REP>          ..
27/01/2017  17:11    <REP>          bin
27/01/2017  17:10    <REP>          lib
               0 fichier(s)                0 octets
               4 Rép(s)  19 236 450 304 octets libres

C:\>

项目的规则就是这样

将库指定为

opencv_calib3d320d.lib
opencv_core320d.lib
opencv_features2d320d.lib
opencv_flann320d.lib
opencv_highgui320d.lib
opencv_imgcodecs320d.lib
opencv_imgproc320d.lib
opencv_ml320d.lib
opencv_objdetect320d.lib
opencv_photo320d.lib
opencv_shape320d.lib
opencv_stitching320d.lib
opencv_superres320d.lib
opencv_ts320d.lib
opencv_video320d.lib
opencv_videoio320d.lib
opencv_videostab320d.lib

但是当我尝试编译那里写的基本测试项目时

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )

    if( argc != 2)
    
     cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
     return -1;
    
    Mat image;
    image = imread(argv[1], IMREAD_COLOR); // Read the file
    if( image.empty() ) // Check for invalid input
    
        cout << "Could not open or find the image" << std::endl ;
        return -1;
    
    namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
    imshow( "Display window", image ); // Show our image inside it.
    waitKey(0); // Wait for a keystroke in the window
    return 0;

我得到了错误

1>------ Build started: Project: ImageCorrection, Configuration: Debug x64 ------
1>  test.cpp
1>LINK : fatal error LNK1104: cannot open file 'opencv_calib3d320d.lib'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我对 Windows 和 Visual Studio 上的编译和链接非常陌生(我习惯于在 Linux 上使用g++),所以我真的不知道我在这里做错了什么。 我认为这可能与动态链接有关,但我既不知道如何调查也不知道如何解决。

非常感谢 Ant 的帮助! :D

【问题讨论】:

预建只有opencv_world320(d).lib。这是您唯一需要链接的一个 确实......我想知道为什么教程中没有写在任何地方......如果你把它写成一个解决方案,我很乐意接受它! 很高兴它有帮助 ;) 遇到此类问题,可能值得在目录中查看您尝试链接的文件是否确实存在。 【参考方案1】:

OpenCV 3.2 预编译二进制文件只有 world 库:

opencv_world320.lib发布 opencv_world320d.lib 用于调试

这就是您需要链接的全部内容。

【讨论】:

以上是关于OpenCV 3.2.0、Visual Studio 2015、Windows 7的主要内容,如果未能解决你的问题,请参考以下文章

缺少使用 viola opencv core2410d.dll 的 Opencv 人脸检测

Visual Studio 2017+OpenCV-入门之环境搭建

使用cmake构建项目时OpenCV 3.2.0链接器错误

visual studio 2010问题修复

在Android中c++里调用opencv

visual-studio-code 中的自动右括号不适用于 js 和 jsx 文件