OpenCV 不适用于 Visual Studio
OpenCV doesn't work with Visual Studio
我刚刚安装了 openCV 版本。 3.00 beta 在我的电脑上,我正在尝试使用 VS2013 对其进行测试。我遵循了快速入门指南:
1) Installation for windows,使用预构建库。
2) OpenCV inside Microsoft VS,使用本地方法和库的 x64/vc12
目录。
因此,他们的示例(在 link #2 中列出)产生了一个错误:
#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: test_openCV, Configuration: Debug Win32 ------
1>LINK : fatal error LNK1104: cannot open file 'opencv_calib3d300d.lib'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
据我了解,我的程序可以看到 openCV 库,但由于某种原因无法打开它们。请帮忙
谢谢
更新:尝试按照前四个评论中的建议进行操作,但仍然没有结果。所以我会post这里完整的信息:
项目:CUDA 6.5(我需要使用 CUDA)。
源文件:Source.cpp
模式:调试,x64。
环境变量:
OPENCV_DIR: C:\programs\misha\opencv\build\x64\vc12
Path (the last string): %OPENCV_DIR%\bin
页面属性:
C\C++ -> General -> Additional Include Directories(last string):
$(OPENCV_DIR)\..\..\include
Linker -> General -> Additional Library Directories(last string):
$(OPENCV_DIR)\lib
Linker -> Input -> Additional Dependencies:
opencv_calib3d300d.lib
opencv_core300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_photo300d.lib
opencv_shape300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_ts300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib
输出:
1>------ Build started: Project: test_openCV, Configuration: Debug x64 ------
1>LINK : fatal error LNK1104: cannot open file 'opencv_calib3d300d.lib'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
因此,出于某种原因我无法构建 x64 项目。错误是一样的。
更新 2:如果您可以构建此示例(或使用 OpenCV 的任何示例),请将它发送到 genkin@physics.msu.ru?我自己想办法
经过长时间的不同尝试,我找到了答案here。对于 x64
项目,除了我上面所做的之外,您还必须:
1) 设置环境变量后重启电脑。没有重新启动,我的计算机上的变量路径没有更新。
2) 除了上面添加的库之外,您还必须添加(尽管对于此示例,其中一些可能不会被使用):
ippicvmt.lib
IlmImfd.lib
libtiffd.lib
libpngd.lib
libjasperd.lib
libjpegd.lib
libwebpd.lib
zlibd.lib
comctl32.lib
编辑:我最近不得不在一台新电脑上重新安装它。正如 user1060873 指出的那样,您只需添加位于 $OPENCV$/lib 文件夹中的库。例如,在我的 PC 上它是 C:\opencv\build\x64\vc12\lib
。请注意,对于调试模式,您应该添加 opencv_world310d.lib
,对于发布模式,您应该添加 opencv_world310.lib
不幸的是,这个解决方案对我不起作用。
我通过仅添加位于我的 $(OPENCV_DIR)\lib 文件夹中的那些库作为附加依赖项(链接器 -> 输入 -> 附加依赖项:) 使其工作。即:opencv_ts300d.lib;opencv_world300d.lib。
我也遇到了同样的问题。我在 VS2015 和 OpenCV 3.2 中使用 win7 x64
经过几个小时的挣扎,我终于找到了答案。每个版本都不一样,可能会有一些差异。这就是我所做的:
- 查找附加库的库位置,它位于
$OPENCV$/lib
文件夹
- 仅将
$OPENCV$/lib
文件夹放入附加库 (Project properties, Configuration Properties, Linker, Input
)。在我的例子中,我将opencv_world300d.lib
(根据不是最新的官方教程!)放入我的附加库中。但是在我检查库文件夹后,有 opencv_world320d.lib
,所以我写 320 而不是 300。
通过取消选中 Linker->Input->Additional Dependencies
下的 "inherit from parent or project defaults" 复选框解决了这个问题
我添加了 "opencv_world300d.lib" 因为我使用的是 opencv 3.0.0 build x64 vc11
我刚刚安装了 openCV 版本。 3.00 beta 在我的电脑上,我正在尝试使用 VS2013 对其进行测试。我遵循了快速入门指南:
1) Installation for windows,使用预构建库。
2) OpenCV inside Microsoft VS,使用本地方法和库的 x64/vc12
目录。
因此,他们的示例(在 link #2 中列出)产生了一个错误:
#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: test_openCV, Configuration: Debug Win32 ------
1>LINK : fatal error LNK1104: cannot open file 'opencv_calib3d300d.lib'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
据我了解,我的程序可以看到 openCV 库,但由于某种原因无法打开它们。请帮忙
谢谢
更新:尝试按照前四个评论中的建议进行操作,但仍然没有结果。所以我会post这里完整的信息:
项目:CUDA 6.5(我需要使用 CUDA)。
源文件:Source.cpp
模式:调试,x64。
环境变量:
OPENCV_DIR: C:\programs\misha\opencv\build\x64\vc12
Path (the last string): %OPENCV_DIR%\bin
页面属性:
C\C++ -> General -> Additional Include Directories(last string):
$(OPENCV_DIR)\..\..\include
Linker -> General -> Additional Library Directories(last string):
$(OPENCV_DIR)\lib
Linker -> Input -> Additional Dependencies:
opencv_calib3d300d.lib
opencv_core300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_photo300d.lib
opencv_shape300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_ts300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib
输出:
1>------ Build started: Project: test_openCV, Configuration: Debug x64 ------
1>LINK : fatal error LNK1104: cannot open file 'opencv_calib3d300d.lib'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
因此,出于某种原因我无法构建 x64 项目。错误是一样的。
更新 2:如果您可以构建此示例(或使用 OpenCV 的任何示例),请将它发送到 genkin@physics.msu.ru?我自己想办法
经过长时间的不同尝试,我找到了答案here。对于 x64
项目,除了我上面所做的之外,您还必须:
1) 设置环境变量后重启电脑。没有重新启动,我的计算机上的变量路径没有更新。
2) 除了上面添加的库之外,您还必须添加(尽管对于此示例,其中一些可能不会被使用):
ippicvmt.lib
IlmImfd.lib
libtiffd.lib
libpngd.lib
libjasperd.lib
libjpegd.lib
libwebpd.lib
zlibd.lib
comctl32.lib
编辑:我最近不得不在一台新电脑上重新安装它。正如 user1060873 指出的那样,您只需添加位于 $OPENCV$/lib 文件夹中的库。例如,在我的 PC 上它是 C:\opencv\build\x64\vc12\lib
。请注意,对于调试模式,您应该添加 opencv_world310d.lib
,对于发布模式,您应该添加 opencv_world310.lib
不幸的是,这个解决方案对我不起作用。
我通过仅添加位于我的 $(OPENCV_DIR)\lib 文件夹中的那些库作为附加依赖项(链接器 -> 输入 -> 附加依赖项:) 使其工作。即:opencv_ts300d.lib;opencv_world300d.lib。
我也遇到了同样的问题。我在 VS2015 和 OpenCV 3.2 中使用 win7 x64 经过几个小时的挣扎,我终于找到了答案。每个版本都不一样,可能会有一些差异。这就是我所做的:
- 查找附加库的库位置,它位于
$OPENCV$/lib
文件夹 - 仅将
$OPENCV$/lib
文件夹放入附加库 (Project properties, Configuration Properties, Linker, Input
)。在我的例子中,我将opencv_world300d.lib
(根据不是最新的官方教程!)放入我的附加库中。但是在我检查库文件夹后,有opencv_world320d.lib
,所以我写 320 而不是 300。
通过取消选中 Linker->Input->Additional Dependencies
下的 "inherit from parent or project defaults" 复选框解决了这个问题我添加了 "opencv_world300d.lib" 因为我使用的是 opencv 3.0.0 build x64 vc11