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


猜你喜欢
- 阅读收获理解SpringBoot自动配置原理一、SpringBoot是什么SpringBoot 的诞生就是为了简化 Spring 中繁琐的
- 过滤掉其他的播放器,使用我自己的播放器来做 wv.set
- 占位符Placeholder的使用xml中的配置:<?xml version="1.0" encoding=&qu
- 进程同步用来实现程序并发执行时候的可再现性。一.进程同步及异步的概念1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返
- 1.概述在本快速教程中,我们将演示如何在Spring Boot应用程序中自定义Spring Security的身份验证失败处理。目标是使用表
- SpringMVC的数据响应SpringMVC的数据响应方式①页面跳转直接返回字符串(如在一个方法中,return了一个"xxx.
- 活锁与死锁活锁活锁同样会发生在多个相互协作的线程间,当他们为了彼此间的响应而相互礼让,使得没有一个线程能够继续前进,那么就发生了活锁。同死锁
- 本文实例讲述了C#使用iTextSharp封装的PDF文件操作类。分享给大家供大家参考。具体分析如下:这个C#代码主要讲iTextSharp
- 前面的文章有讲到微信的一系列开发文章,包括token获取、菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信用户的信息,在上一篇我们
- 最近一门课要求编写一个上位机串口通信工具,我基于Java编写了一个带有图形界面的简单串口通信工具,下面详述一下过程,供大家参考 ^_^一:首
- JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步
- 本文实例讲述了c#图像截取的实现方法。分享给大家供大家参考。具体如下:图像截取的相关代码如下: public Form1()&nb
- Gstreamer到底是个啥?GStreamer 是一个 基于pipeline的多媒体框架,基于GObject,以C语言写成。应用GStre
- 现在已经进入了2018年,Android 8.0系统也逐渐开始普及起来了。三星今年推出的最新旗舰机Galaxy S9已经搭载了Android
- try catch finally组合:检测异常,并传递给catch处理,并在finally中进行资源释放。try catch组合 : 对代
- 可以用DSA和RSA,如: using System; using System.Text; using Sy
- 设置变量nRowNum = 8; % 画布行数nColNum = 9; % 画布列数offset_x = 0;% 红车坐标起点offset_
- 一、滑动验证码生成思路1、随机选择一张图片2、生成滑块起点位置(x, y)3、生成滑块轮廓4、抠出滑块5、将滑块部位去除颜色二、主要方法这里
- 什么是有序性在开发中,我们通常按照从上到下的顺序编写程序指令,并且希望cpu和编译器按照我们预先编写的顺序去执。但往往cpu和编译器为了提高
- 之前自己从来没有做过发送邮箱的功能,前段时间项目需要,在找了很多帖子之后,终于实现了。之后有整理了一下,写了一个类。直接给类传递信息,就可以