我从源代码构建OpenCV 3.0。还有一些额外模块的contrib repo。我手动设置我的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社区版中,它给了我这些错误:
我看到similar thread,他们说这是由x86 / x64问题引起的。但我的项目已经是x86了。我构建的OpenCV也针对x86(见下文)。这是什么原因?
OpenCV 3.0 INSTALL
项目生成以下lib目录:
所以它确实是x86
。
我的lib路径配置为上述路径:
我添加了所有*d.lib
个文件。
以下是我的VC项目Configuration Manager
所以它确实是x86
。
可能出错?
我手动搜索fastFree()
功能。它在opencv_core300d.lib
文件中定义。我使用dumpbin /symbols
命令检查符号。我发现它的名称与fastFree@cv@@YAXPAX@Z
完全相同。那么为什么找不到呢?
答案 0 :(得分:6)
这里是将OpenCV 3.0.0与预编译的libs一起使用的步骤,用于静态链接OpenCV的C ++项目,在Windows(使用Windows 8.1测试)和Visual Studio(使用Visual Studio 2013测试)中运行此程序:
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
Mat3b img = imread("path_to_image");
imshow("img", img);
waitKey();
return 0;
}
添加必需的库(以下内容适用于此简单示例,如果需要其他功能,则应添加更多):
配置属性 - &gt; C / C ++ - &gt;代码生成 - &gt;运行时库
对于RELEASE构建,您需要在发布模式下执行从6到9的步骤,添加没有尾随&#34; d&#34;在步骤8中,在步骤9中使用多线程(/ MT)。
作为奖励,我还建议为Visual Studio安装Image Watch扩展名。非常有用的调试你的Mat
!