我从源代码构建了 OpenCV 3.0。以及一些额外模块的 contrib 存储库。我手动设置 VS2013 项目以使用生成的 lib 文件。
我的代码现在很简单:
#include "opencv2\core\core.hpp"
#include "opencv2\imgcodecs\imgcodecs.hpp"
int _tmain(int argc, _TCHAR* argv[])
{
cv::Mat image = cv::imread("img.jpg");
return 0;
}
但在 VS 2013 社区版本中它给了我这些错误:
I see 类似的线程,他们说这是由 x86/x64 问题引起的。但我的项目已经是x86了。我构建的 OpenCV 也是针对 x86(见下文)。可能是什么原因呢?
ADD 1
OpenCV 3.0INSTALL
项目生成以下lib目录:
所以它确实是一个x86
one.
我的lib路径配置为上面的路径:
我添加了所有*d.lib
files.
下面是我的 VC 项目Configuration Manager
所以确实是这样x86
, too.
哪里可能出错?
ADD 2
我手动搜索了fastFree()
功能。它定义在opencv_core300d.lib
文件。我用dumpbin /symbols
命令检查符号。我发现它的名字被完全破坏了fastFree@cv@@YAXPAX@Z
。那么为什么找不到呢?
以下是在 Windows(使用 Windows 8.1 测试)和 Visual Studio(使用 Visual Studio 2013 测试)中静态链接 OpenCV 的 C++ 项目中使用带有预编译库的 OpenCV 3.0.0 来运行该程序的步骤:
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
Mat3b img = imread("path_to_image");
imshow("img", img);
waitKey();
return 0;
}
- 下载自http://opencv.org/downloads.html
- Extract
- Let's call OPENCV_DIR the dir containing:
- Create an empty project:
- 添加一个 cpp 文件(例如 Start.cpp),其中将包含您的主要函数(例如上面的代码片段)
- 配置调试
- Add include and lib directories:
- 配置属性 -> VC++ 目录
- 包含目录:添加 OPENCV_DIR\build\include
- 库目录:添加 OPENCV_DIR\build\x86\vc12\staticlib
-
添加所需的库(以下内容适用于这个简单的示例,如果需要其他功能,您应该添加更多库):
- opencv_core300d.lib
- opencv_highgui300d.lib
- opencv_imgproc300d.lib
- opencv_hal300d.lib
- opencv_imgcodecs300d.lib
- libjpegd.lib;
- libpngd.lib
- libjasperd.lib
- 伊尔姆IMFD.lib
- libtiffd.lib
- libwebpd.lib
- zlibd库
- ippicvmt库
- %(附加依赖项)
-
配置属性 -> C/C++ -> 代码生成 -> 运行时库
对于 RELEASE 构建,您需要在发布模式下执行步骤 6 到 9,在步骤 8 中添加不带尾随“d”的库,并在步骤 9 中添加多线程 (/MT)。
- Enjoy!
作为奖励,我还建议安装图像观察Visual Studio 的扩展。对于调试你的程序非常非常有用Mat
s!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)