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,图片读取不到,如果代码没有问题的话,就是图片路径的问题。之前看到网上说把路径放到项目根目录或者资源目录下,根据图片名字可以读取到,试了一下,发现并不可以,类似这样: