VS2013 + opencv 配置及读取一张图片

环境配置了两天终于好了,期间出现了一个接一个的问题,总结一下,以防下次踩坑。

1.下载安装opencv3.0。

地址:https://www.opencv.org/releases.html,选择Win pack

2. 解压提取。

新建opencv300.props文件,具体内容如下:

<?xml version="1.0" encoding="utf-8"?>  
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  
  <ImportGroup Label="PropertySheets" />  
  <PropertyGroup Label="UserMacros" />  
  <PropertyGroup>  
    <IncludePath>$(OPENCV)include;$(IncludePath)</IncludePath>  
    <LibraryPath Condition="$(Platform)==Win32">$(OPENCV)x86vc12lib;$(OPENCV)x86vc12staticlib;$(LibraryPath)</LibraryPath>  
    <LibraryPath Condition="$(Platform)==X64">$(OPENCV)x64vc12lib;$(OPENCV)x64vc12staticlib;$(LibraryPath)</LibraryPath>  
  </PropertyGroup>  
  <ItemDefinitionGroup>  
    <Link Condition="$(Configuration)==Debug">  
      <AdditionalDependencies>opencv_ts300d.lib;opencv_world300d.lib;IlmImfd.lib;libjasperd.lib;libjpegd.lib;libpngd.lib;libtiffd.lib;libwebpd.lib;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;zlibd.lib;%(AdditionalDependencies)  
      </AdditionalDependencies>  
    </Link>  
    <Link Condition="$(Configuration)==Release">  
      <AdditionalDependencies>opencv_ts300.lib;opencv_world300.lib;IlmImf.lib;ippicvmt.lib;libjasper.lib;libjpeg.lib;libpng.lib;libtiff.lib;libwebp.lib;opencv_calib3d300.lib;opencv_core300.lib;opencv_features2d300.lib;opencv_flann300.lib;opencv_highgui300.lib;opencv_imgcodecs300.lib;opencv_imgproc300.lib;opencv_ml300.lib;opencv_objdetect300.lib;opencv_photo300.lib;opencv_shape300.lib;opencv_stitching300.lib;opencv_superres300.lib;opencv_ts300.lib;opencv_video300.lib;opencv_videoio300.lib;opencv_videostab300.lib;zlib.lib;%(AdditionalDependencies)  
      </AdditionalDependencies>  
    </Link>  
  </ItemDefinitionGroup>  
  <ItemGroup />  
</Project>

文件目录如下:

3.配置环境变量。

选择【计算机】->【属性】->【高级系统设置】->【环境变量】,新增系统变量中的Path变量

4.打开VS2013,新建一个空项目。

添加一个新的.cpp文件

5.VS配置

选择【视图】->【其他窗口】->【属性管理器】,右键点击项目名称,选择【添加现有属性表】,添加opencv300.props。

右键项目名称,选择【属性】,选择【VC++目录】,添加【包含目录】和【库目录】。(一定要把下面的从父级继承打钩,不然以后会出现找不到.lib等问题)

在该属性页面,选择【链接器】->【输入】->【附加依赖项】,添加这两个库即可。opencv_ts300d.lib

opencv_world300d.lib

8.测试图片。

添加以下代码:

#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
	const char* imagename = "F:gaoxixi.jpg";

	//从文件中读入图像
	Mat img = imread(imagename);

	//如果读入图像失败
	if (img.empty())
	{
		fprintf(stderr, "Can not load image %s
", imagename);
		return -1;
	}

	//显示图像
	imshow("image", img);

	//此函数等待按键,按键盘任意键就返回
	waitKey();

	return 0;
}

运行效果如图:

9.总结

(1)如果找不到.lib,提示错误为1104,大部分时候都是因为库的路径配置不对或者不全面,看提示是哪个.lib文件,在计算机里搜索,找到路径后,把该路径依赖到库目录就好了。

(2)返回值为-1,图片读取不到,如果代码没有问题的话,就是图片路径的问题。之前看到网上说把路径放到项目根目录或者资源目录下,根据图片名字可以读取到,试了一下,发现并不可以,类似这样:

经验分享 程序员 微信小程序 职场和发展