opencv配置的完整步骤(win10+VS2015+OpenCV3.1.0)
作者:水亦心 发布时间:2023-06-28 14:55:19
一、前言(吐槽+煽情+简介)
1.吐槽
为啥这个时候我要发这个呢?其实我是想以后有空的时候再发,因为最近事情比较多,但是,昨天发生了一件非常悲伤的事情,电脑电池炸了,电脑电池炸了,电脑电池炸了。
不由得安慰自己:天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其生,行拂乱其所为,所以动心忍性,增益其所不能。
2.煽情
在这里,我还是要感谢一下一个人,一个我生命中最重要的男人,他对自己“小气”了一辈子,出去工作,舍不得乱花一分钱,但他还是会倾其所有来满足我,他说,这个时候,你要好好学习,不要因为别的扰乱你自己,如果有用,再买一个。对,这个人就是我的爸爸。父爱如山,我以后也会成为一个父亲,所以,首先我要做一个好儿子,好好努力,让父母为我而骄傲。
所以,如果你看了我的博客,我希望你不仅能学到知识,更希望你能知道,你有这个好的机会来学习,总会有人在你背后默默付出,你要努力,为了自己,也要为了在你背后默默付出的人。
最后一句煽情:爸爸,我爱你。
3.简介
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#、Ch、Ruby的支持。
我在学习的时候,所有免费的文档,文章,都是关于2.4.9的,最开始想过用2.4.9,后来自己买了教程,用的是3.1.0,所以自己也用了3.1.0。
最近几年人工智能突然火了,机器学习,深度学习更是遍地开花,神经网络更是为人们所熟知。所以从3.3.0版本的opencv开始支持神经网络。如果要学习神经网络,建议用3.3.0以上的,但是最好不要用最新的,这个最新不是说最高的,而是说,假如2018年5.19号刚刚发布,你今天就要用,可能网上都没有相关教程,特别是opencv2.0版本和3.0版本有些是不一样的,api名字都不一样,万一最新版有改版,或者不支持你的编译环境,作为初学者,你遇到问题,解决方案都找不到,除非你身边有大牛。当然你如果是一个相关领域的大牛,可以选用最新版,感受一下新版的各方面特性,这个官网也应该会有相关的文档的,最为大牛的你,这个问题对你来说,不是问题。
还有就是本文不讲vs2015的安装与配置,因为vs2015不是一个简简单单的库,你需要根据自己的需要去选择一些功能。这里就不再赘述了。
二、相关文件下载
vs2015:百度会有很多下载位置,自由选择。这里就不再提供啦。
opencv3.1.0:链接: https://pan.baidu.com/s/1s39IL6Qfju7k5Bs0Ui2oPA 提取码: 5g9e。
opencv安装
双击opencv3.1.0打开,选择安装目录,记住,一定要养成一个习惯:能不安装在C盘就不要安装在C盘。如果电脑有很多盘,最好有一个盘是放安装软件和安装包的,想做一个程序员,一定要让自己的文件归类清晰一点。一般会有如下的文件夹和文件。
三、配置变量环境
这一步的步骤顺序如下,然后大家看图就好了:
【计算机】->【(右键)属性】->【高级系统设置】->【高级(标签)】->【环境变量】->“双击”系统变量中的PATH->在变量值里面添加相应的路径。
在路径配置中填写 ”…… opencv\build\x64\vc14\bin”,很多人发现,X64中有两个文件夹:
VC12和VC14,很多人不明白这个是什么意思?这个其实是VS对应的版本号。详细的对应如下:
Visual Studio 6 | vc6 |
Visual Studio 2003 | vc7 |
Visual Studio 2005 | vc8 |
Visual Studio 2008 | vc9 |
Visual Studio 2010 | vc10 |
Visual Studio 2012 | vc11 |
Visual Studio 2013 | vc12 |
Visual Studio 2015 | vc14 |
所以如果你是2013的也可以啦。因为3.1.0下面有VC12。支持VS2013。
四、配置2015
1.VC++下的包含与库目录
新建一个c++项目,在项目名称右键选择属性。进入下面这个界面,我们首先需要配置包含目录和库目录
在右侧点击,进入编辑。
然后按照下面的框框,从上往下点,将目录复制到框里保存,一共保存三个:
“...\opencv\build\include”; “...\opencv\build\include\opencv”; “...\opencv\build\include\opencv2”
用同样的方式在库目录中添加“...\opencv\build\x64\vc14\lib”。
2.链接器下的配置
在链接器下的输入中,打开附加依赖项,并输入:
opencv_world310.lib;opencv_world310d.lib;
注意点
理论上,所有的工作就做完了,然后就可以调试运行啦。大家可以复制如下源代码。注意imread()函数是读取图片,括号里面是“路径+图片名称”。并且要用正斜杠,或者两个反斜杠。如果用一个反斜杠,会被认为是转义字符的前缀。
五、测试源码及问题解决
#define INPUT_TITLE "input image"#include<iostream>#include<opencv2\opencv.hpp>using namespace std;using namespace cv;int main() {Mat src;src = imread("E:/image/src.jpg");if (!src.data){cout << "ERROR : could not load image.";return -1;}namedWindow(INPUT_TITLE, CV_WINDOW_AUTOSIZE);imshow(INPUT_TITLE, src);waitKey(0);return 0;}
然后,报错了。这个是因为你不是在C盘安装的,程序找不到该文件。解决方案如下:
将bin目录(...\OpenCV\build\x64\vc12\bin)中的3个dll文件复制在(C:\Windows\System32)或者(C:\Windows\SysWOW64)中。
解决了这个问题,就能正确输出啦。
六、输出效果图
来源:https://blog.csdn.net/shuiyixin/article/details/80386022
猜你喜欢
- 在spring中有很多以XXXAware命名的接口,很多人也不清楚这些接口都是做什么用的,这篇文章将描述常用的一些接口。一,Applicat
- 目标效果: 点击动画按钮之后每张牌各自旋转 散开到屏幕上半部分的任意位置之后回到初始位置 比较像LOL男刀的技能动画 : )1: 创建卡牌对
- UI 妹纸又给了个图叫我做,我一看是这样的:我们首先把这个控件划分成 几个部分:1.底下部分的直线 :2.左右两边的半圆
- 目录多选和单选的不同之处实现方式界面变更代码实现总结多选和单选的不同之处单选的时候,选中一个就可以直接把结果返回,因此本身底部弹窗无需状态管
- 本文实例讲述了C#获取网页源代码的方法。分享给大家供大家参考。具体如下:public string GetPageHTML(string u
- 前言RefreshIndicator是Flutter里常见的下拉刷新组件,使用是比较方便的。但由于产品兄弟对其固定的刷新样式很是不满,而且代
- google benchmark已经为我们提供了类似的功能,而且使用相当简单。具体的解释在后面,我们先来看几个例子,我们人为制造几个时间复杂
- 在开发Android应用程序中,经常会自定义View来实现各种各样炫酷的效果,在实现这吊炸天效果的同时,我们往往会定义很多attr属性,这样
- 今天讲解一下Fragment的控制,主要是切换View和页面替换等操作。还有就是如何获取Fragment的管理对象,以及与Activity的
- 本文主要介绍我为桌面和 Web 设计的一个超级秘密 Flutter 项目使用了画布和可拖动节点界面。本教程将展示我如何使用堆栈来使用小部件完
- android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 Translat
- 需求:有些时候,我们需要连接多个数据库,但是,在方法调用前并不知道到底是调用哪个。即同时保持多个数据库的连接,在方法中根据传入的参数来确定。
- 本文介绍了Spring Boot Admin监控服务上下线邮件通知,分享给大家,具体如下:微服务架构下,服务的数量少则几十,多则上百,对服务
- 自从SEOTcs系统11月份24日更新了一下SEO得分算法以来,一直困扰我的一个问题出现了,java的数据job任务,在执行过程中会经常报以
- 背景在接口请求过程中,传递json对象,springboot转换为实体VO对象后,所有属性都为null。post请求:后台接收请求:当时就懵
- Pom依赖<parent> <groupId>org.springframework.bo
- 需求说明实际操作过程中,从D盘根目录下的ak.txt读取文件写入D盘根目录下的hello.txt文件内实现思路写两个方法,一个用于读取目标文
- 【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1
- 1.map遍历快速实现边距,文字自适应改变大小Container( // padding: EdgeI
- 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1)