OpenCV3.1.0+VS2013配置+Win10(64位)

【环境】VS2013和MATLAB相互调用混合编程

Matlab 2016a和VS2013混合Dll编程步骤

更换了硬盘之后,重新配置了一次OpenCV,这次在下载的时候,发现有OpenCV3.1.0版本了,所以我就下载了截止到目前为止最新的版本进行配置。

PS:我之前使用的是,OpenCV3.0.0+VS2013。具体的配置可以参考一下两个链接:

http://blog.csdn.net/hyichao_csdn/article/details/41723825

http://jingyan.baidu.com/article/64d05a0245aa70de55f73b12.html

虽然配置OpenCV不是一件很繁琐的事情,但是因为不是很了解每一步的作用,所以有时候一不小心就会出错。下面就跟大家分享一下我配置的方法以及一些技巧。

在这之前,像做饭一样,我们得先准备好材料:

VS2013+OpenCV3.1.0

OpenCV3.1.0可以到OpenCV的官网上面下载:

http://opencv.org/

下载完成后,得到的是一个.exe:

接着运行它即可得到我们需要的文件夹。

-------------------------------------------------------上面是一些准备工作,下面正式开始-----------------------------------------------------

我想介绍两种方法,前一种比较low,每次使用VS新建一个工程时,需要重新配置;后一种效率比较高,每次使用VS的时候只需要添加现有的属性表(不清楚属性表是什么没关系哈,耐心往下看)即可,本文有一些截图过于细节,目的是为了方便初次配置的朋友,之前配置过的朋友可以跳着看哈。

(一)先来介绍第一种方法。

1、配置环境变量。

我的电脑(右键)——属性——高级系统设置——环境变量——Path(双击)

在原有的Path后面加上分号;然后加上D:/Work_Software/OpenCV3.1/opencv/build/x64/vc12/bin

注意加上的路径是你的电脑上build/x64/vc12/bin所对应的路径,不要照搬我上面的路径。
        再注意最后不用加分号,分号只加在路径之间,而且切忌将原来的Path都删除!!!
        PS:这个bin文件夹是什么来头呢?里面有一些dll文件,也就是动态链接库,可以理解成是opencv里面用到的函数的实现。

(初次配置OpenCV的朋友可以忽略此括号中的话,PS:配置过3.1.0之前版本的朋友会发现,3.1.0版本中build文件夹中只有x64文件夹,而没有了x86文件夹。也就是说,在配置3.1.0版本之后,使用VS进行OpenCV相关的编程的时候,只能使用64位的编译器,而不能使用32位的编译器了。这与之前版本有所不同,之前是,32位系统只能使用32位的编译器,而64位的系统可以使用32位或者64位的编译器。这个是我自己琢磨出来的,如果有错误的地方,欢迎指正。)
        好了,到这里,环境变量就配置完成了,有的说法是,环境变量配置完成后需要重启一下电脑才能生效,这个没有亲测过,保险起见的话可以重启一下,顺便放松一下眼睛~~~~

2、VS中的配置。

(1)首先,打开VS2013并新建工程如下:

(2)接着,在源文件处新建一个main.cpp文件如下:

这样就完成了新建工程的任务,接下来就要对我们新建的工程进行设置了。下面才是关键:

(3)将32位编译器Win32改为64位编译器x64,操作如下图:

(4)接下来,对工程test1进行设置,总共有三个东西需要设置:“包含目录”“库目录”以及“附属依赖项”,一个一个来。

第一,编辑包含目录如下:

选择build文件夹中的include文件夹操作如下:

设置好包含目录之后,我们后面的使用中就可以在我们程序的开头将与OpenCV有关的头文件通过“#include<opencv2/opencv.hpp>”这样的方式包含进来了。

PS:有的教程不仅仅将include文件夹的路径添加到包含目录中,而且将include文件夹中opencv和opencv2这两个文件夹的路径也添加到包含目录中了。这一步可有可无,区别在于,如果我将opencv2文件夹的路径也添加到包含目录中,那么我在我的程序开头就可以将上面说到的“#include<opencv2/opencv.hpp>”改写成“#include<opencv.hpp>”,编译器可以自己跑到opencv2文件夹中查找。

第二,编辑库目录,类似于编辑包含目录,将/build/x64/vc12/lib的路径添加到库目录中如下图(容易知道,lib也就是library库的缩写):

第三,添加附属依赖项如下:

需要注意的是,我们这里添加的附属依赖项是以“d”结尾的,也即是Debug模式的,如实想用Release模式的话,则将上面的“opencv_world310d.lib”改为“opencv_world310.lib”即可。

配置过之前版本的朋友会发现,以前2点几版本的OpenCV需要添加一大堆的附属依赖项,到了3.0的时候仅仅需要两个.lib,到了3.1.0的时候,就只剩下一个了!!!

好了,到此为止,第一种方法就介绍完了,只要在新建的main.cpp文件中运行一下下面的测试代码:

#include<opencv2/opencv.hpp>

using namespace cv;

int main()

{

Mat picture = imread("F://My_Desktop//1st//no_phone//1.jpg");

imshow("测试程序", picture);

waitKey(0);

}

就可以欣赏到我们自己的劳动成果啦!imread后面的路径是所要显示的照片的路径,这里使用了“//”而不是“/”是因为“/”在C++中有转义的作用,所以要用两个“/”即“//”。

当然在前面也说到了,用这种方法的缺点是每次使用VS新建一个工程的时候,都要重复上面的2(1)-2(4)。所以,下面我将要介绍第二种方法!

---------------------------------------------------------第二种方法-----------------------------------------------------------------

(二)第二种方法。

1、配置环境变量。同上面的方法一样,如果在使用方法一的时候已经配置过了,那么这一步可以跳过。

2、VS中的配置。

(1)、(2)同(一)2(1)-(2)

(3)添加新项目属性表。

打开属性管理器:

这时候出现的窗口是下面这样的,这是使用32位编译器的情况,如上面说到的,我们要将编译器改为64位的:

这时候需要打开配置管理器,新建x64:

这样操作之后,属性管理器窗口多出了两个东西如下:

接下来在Debug|x64或者Relase|x64右键(这里以Debug为例):

添加属性表,名称改成一个方便自己记忆的名字,我这里用的是opencv_3.1.props

接着,在我们新添加的属性表处右键选择属性:

然后就得到了一个很亲切的窗口,没错,这个在上面出现过,设置的过程也跟上面一样。按照上面的(一)2(4)所说的方法设置好“包含目录”“库目录”以及“附属依赖项”。

好了,当你设置好点下“确定”之后,你同样可以在main.cpp中输入(一)中给出的测试程序,运行即可。

下面是重点,当你下一次再打开VS新建工程的时候,你需要做的仅仅是下面的事情:

第一步:新建工程;

第二步:打开配置管理器(上面有说到如何打开),将Win32改为x64;

第三步:在属性管理器中,添加现有属性表,将上面制作好的opencv_3.1.props添加进来如下图所示。

这样就大功告成啦!!!接着在新建的main.cpp文件中就可以编程了,如果你不嫌烦的话,可以在试一下上面的测试程序。

谢谢你耐心看完它,希望能对你有所帮助!

转载:http://www.th7.cn/Program/cp/201603/773871.shtml

Visual Studio和MATLAB混合编程,有两种方法:

  1 MATLAB调用C程序;

  2 VS调用MATLAB(目前见到的都是VS,其他编译器如codeblocks,或不提供这项功能);

前一种是用MATLAB的mex命令调用VS或其他编译器,将以一定方式编写出的C文件编译成.mexw32(针对win32)或者.mexw64(针对win64),然后MATLAB就可以用调用动态链接库的方式,调用C程序。这一过程中,只需要在安装好编译器的前提下,执行:

mex -setup

mbuild -setup

并按照提示按部就班地帮助MATLAB找到C编译器就可以了。遇到MATLAB找不到Visual Stdio的情况时,可按照官方网站提供的方法,例如如果MATLAB找不到已安装的Visual Studio 2013,则在

http://www.mathworks.com/matlabcentral/fileexchange/44408-matlab-mex-support-for-visual-studio-2013--and-mbuild-

下载官方提供的文件,按照README的要求将文件复制到指定目录下即可。

README:

The files * msvc120engmatopts.bat* msvc120opts.bat* msvc120opts.stp
should be copied to C:\Program Files\MATLAB\R2013a\bin\win64\mexopts .The files * msvc120compp.bat* msvc120compp.stp
should be copied to C:\Program Files\MATLAB\R2013a\bin\win64\mbuildopts .

另一种是反过来,由VS去调用MATLAB,因为归根结底,许多底层的代码都依赖于C/C++语言,如果要使用MATLAB进行实时的数据处理,那么必然是使用C/C++(从操作系统内核、套接字,或者设备)获取数据,再调用MATLAB进行处理。切入正题:

1   首先正确地安装好环境,如下是我使用的环境:

    x86

    Windows 7 

    VS2013

    MATLAB R2010a(安装目录为D:\MATLAB\R2010a)。

2    下面是VS路径的包含

右键项目—属性—VC++目录

               —包含目录,添加D:\MATLAB\R2010a\extern\include;(注意分号)

               —库目录,添加D:\MATLAB\R2010a\extern\lib\win32\microsoft;

       —C/C++(—常规),添加附加包含目录D:\MATLAB\R2010a\extern\include\;

          —链接器

               —常规,添加附加库目录D:\MATLAB\R2010a\extern\lib\win32\microsoft;

               —输入,添加附加依赖项:libeng.lib;libmat.lib;libmex.lib;libmx.lib;mclmcrrt.lib;mclmcr.lib;

3   系统环境变量:PATH里添加D:\MatLab\R2010a\bin\win32; 帮助VS找到MATLAB的提供的动态链接库。

4   注册MATLAB服务器:cmd,在D:\MatLab\R2010a\bin目录下运行

matlab \regserver

大概是开启MATLAB Server模式,接收VS的调用请求吧。

5  下面写C/C++程序:

 添加头文件以及动态链接库

#include "engine.h"#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libeng.lib")
#pragma comment(lib, "libmx.lib")
#pragma comment(lib, "libmat.lib")

打开引擎(引擎用来调用MATLAB):

Engine* pEng = NULL;if (!(pEng = engOpen(NULL))){printf("Open matlab enging fail!");getchar();return -1;}

引擎打开函数openEng调用完毕后一定要检查是否打开成功(类似云malloc函数,申请完内存一定要检查是否申请成功),因为就算pEng==NULL,在函数engEvalString执行中也不会抛出异常的,只会导致engGetVariable执行失败,当然咯,因为根本没执行嘛,哪来的variable?

然后可以调用啦,一切的matlab命令都可以通过下面这个函数传入MATLAB执行,类似于Linux的系统调用exec("...")和windows的system("..."):

engEvalString(pEng, "x=0:0.01:pi); y=sin(x); plot(x, y)");

如果要得到MATLAB的返回结果:

engEvalString(pEng, "x=0:0.02:3.14; y=sin(x); plot(x, y)");
mxArray *x= engGetVariable(pEng, "x");
mxArray *y= engGetVariable(pEng, "y");
double * _x = mxGetPr(x);
double * _x = mxGetPr(y);
//此时_x为x数组,_y为y数组

由于MATLAB里面,数据都将看成矩阵来处理,因此返回结果也是以Array的方式返回,如果是单个值,就是array[0],否则为array[0..n-1],如何得到n呢?还是用函数engGetVariable咯,可以先执行n=length(x),再将n传回。

 执行结束后,记得关闭引擎

if(pEng)engClose(pEng);

注意一旦关闭,就不能再使用pEng了,否则会抛出异常。并且,在关闭引擎后,原本在执行过程中得到的figures也会关闭。在我的课题里面,引擎是在程序开始时打开,程序最终退出时才关闭。

6   如果在编译期间出现“找不到XXX.lib”的情况,检查路径是否正确添加,不然就直接复制lib文件到system32吧。。。

7   如果编译链接通过,运行起来还是有异常,检查matlab server是否有注册成功:运行matlab /regserver,再试一试。

8   因为调用MATLAB执行的命令是以字符串形式传入的,千万注意字符串里面的特殊符号、空格。特殊符号前面需要加上反斜杆,若有空格,依据MATLAB的语法,应使用单引号。例如:

engEvalString(pEng,"cd \'E:\\Desktop\\Alilce and Bob\' ");

9  如果遇到ERROR LNK2019,如:

错误    1    error LNK2019: 无法解析的外部符号 _mxGetPr,该符号在函数 "void __cdecl dataProcessing(struct engine *)" (?dataProcessing@@YAXPAUengine@@@Z) 中被引用    C:\Users\OurEDA\Desktop\Ahotspot\Models\RSS CSI Models\matlab\main.obj    matlab
错误    2    error LNK2019: 无法解析的外部符号 _mxDestroyArray,该符号在函数 "void __cdecl dataProcessing(struct engine *)" (?dataProcessing@@YAXPAUengine@@@Z) 中被引用    C:\Users\OurEDA\Desktop\Ahotspot\Models\RSS CSI Models\matlab\main.obj    matlab
错误    3    error LNK2019: 无法解析的外部符号 _engEvalString,该符号在函数 "void __cdecl dataProcessing(struct engine *)" (?dataProcessing@@YAXPAUengine@@@Z) 中被引用    C:\Users\OurEDA\Desktop\Ahotspot\Models\RSS CSI Models\matlab\main.obj    matlab
错误    4    error LNK2019: 无法解析的外部符号 _engOpen,该符号在函数 _main 中被引用    C:\Users\OurEDA\Desktop\Ahotspot\Models\RSS CSI Models\matlab\main.obj    matlab
错误    5    error LNK2019: 无法解析的外部符号 _engClose,该符号在函数 _main 中被引用    C:\Users\OurEDA\Desktop\Ahotspot\Models\RSS CSI Models\matlab\main.obj    matlab
错误    6    error LNK2019: 无法解析的外部符号 _engGetVariable,该符号在函数 "void __cdecl dataProcessing(struct engine *)" (?dataProcessing@@YAXPAUengine@@@Z) 中被引用    C:\Users\OurEDA\Desktop\Ahotspot\Models\RSS CSI Models\matlab\main.obj    matlab
错误    7    error LNK1120: 6 个无法解析的外部命令    C:\Users\OurEDA\Desktop\Ahotspot\Models\RSS CSI Models\Debug\matlab.exe    1    1    matlab

检查MATLAB和VS是否运行在同一平台上,如果MATLAB是x64,那么配置管理器中一定要选中x64,否则选Win32:

右键项目——在配置管理器的下拉菜单里选中正确的平台,然后按照上面所述的过程重新配置路径。

以上~

转载于:https://www.cnblogs.com/Vae1990Silence/p/10104558.html

OpenCV3.1.0+VS2013配置+Win10(64位)(转载)相关推荐

  1. Win10 OpenCV3.3.0+VS2013配置大坑,OpenCV解决方案编译报错“找不到python36_d.lib”错误...

    今天因为想要用OpenCV做图像识别,小白一个,在网上找到一个教程,但是需要配置OpenCV3.3.0的环境,于是又在网上找OpenCV3.3.0+VS2013(因为我之前已经安过了VS2013),前 ...

  2. Win10 64位+VS2015+Opencv3.3.0安装配置

    引言 最近准备搞一搞机器视觉方面的研究,所以着手进行环境的搭建.所使用的环境是Win10 64位+VS2015+Opencv3.3.0安装配置 Win10 64位+VS2015+Opencv3.3.0 ...

  3. (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功

    (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 Visual Studio 2015下载地址:https://msdn.itellyo ...

  4. 计算机配置64位,win10 64位系统最低配置要求_win10系统 64位最低电脑配置要求多少...

    很多电脑都已经安装上win10系统,硬件配置较好的都安装win10 64位系统,由于win10 64位对配置要求较高,很多人不敢升级,那么win10 64位最低配置是什么呢?win10 64配置要求多 ...

  5. Win10 64位系统Qt5.9.7连接神通数据库7.0

    Win10 64位系统Qt5.9.7连接神通数据库7.0 因为国产化的原因,项目后期数据库要使用神通数据库,将自己安装测试过程记录如下,以便后期自查: 当前系统环境: Qt版本: 5.9.7 神通数据 ...

  6. MySQL下载和安装 win10 64位 MySQL8.0

    第一步:到Mysql官网下载. 从[https://dev.mysql.com/downloads/mysql/](https://dev.mysql.com/downloads/mysql/)找到需 ...

  7. win10 64位 mysql 5.7_mysql 5.7.13 安装配置方法图文教程(win10 64位)

    本文实例为大家分享了mysql 5.7.13 winx64安装配置方法图文教程,供大家参考,具体内容如下 (1) 下载MySQL程序,您可以从MySQL官网上下载,或者点击这里下载 (2) 解压mys ...

  8. Win10 64位下 darknet YOLO V3配置,视频测试及结果保存

    环境如下: VS2015社区版 OpenCV3.4.0 (下载win pack链接:https://www.opencv.org/opencv-3-4.html) Win10 64位,i7-6700 ...

  9. vc 6.0与mysql win10_vc 6.0官方下载win10-vc 6.0 win10 64位下载中文完整版-西西软件下载...

    vc 6.0 win10 64位经测试可完美运行且兼容性良好,无论是台式机还是笔记本都可以正常使用.vc++6.0是一款强大的可视化编程工具,是一款优秀专业的C++编译器,界面简洁,易学易用. vc+ ...

最新文章

  1. 【栈】日志分析(BSOJ2981)
  2. JavaScript判断一个变量是对象还是数组
  3. Java web后端2 Servlet Maven HttpServlet ServletConfig ServletContext HTTP协议
  4. Pycharm 中py文件编译成exe文件出现的问题和一个问题解决
  5. 解决ubuntu中出现:dpkg: error processing package install-info
  6. 图像分割matlab阈值自动计算,图像分割的阈值算法matlab实现.doc
  7. sprintf函数、snprintf函数、asprintf函数、vsprintf
  8. php环境用什么服务器好些_PHP环境部署,Linux真的比Windows好吗?
  9. java反编译工具luyten增强版
  10. java dump分析工具_java线程dump分析工具
  11. 一个企图用代码偷懒计算测量学闭合导线各项数据的屑是否有错
  12. python自带的库有哪些_python自带库
  13. C语言 怎么求字符串的长度,实例讲解(简洁)
  14. 【延展Extension的基本使用 Objective-C语言】
  15. vuecli2+axios 设置多个域名代理
  16. 昆特牌显示无法连接至服务器,巫师之昆特牌总是显示无法连接网络
  17. 洛谷 P1911 L国的战斗之排兵布阵
  18. 【开发指南】Spring Cloud集成POI完成Excel读写操作
  19. android实现类似在短信图标右上角显示短信个数的效果
  20. 折线多边形的原位放大

热门文章

  1. 记忆心理学--艾宾浩斯
  2. 10 月2日 c语言判断奇偶数
  3. 话说接口测试Post请求提交数据的四种类型,一篇文章整的明明白白
  4. 常用操作系统扫描工具介绍
  5. vscode remote ssh无法连接服务器 ——.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC不是可识别的文件,程序
  6. wps怎么调出左侧目录_wps怎么显示左侧目录树
  7. android自定义窗口层级(自定义车载系统中倒车影像显示层级)
  8. ROS机器人里程计模型
  9. java企业命名规范
  10. 学弟学妹们这道题不会Java类就白学了——二月天