OpenCV学习(一):环境搭建

来源:互联网 发布:qq资源网软件 编辑:程序博客网 时间:2024/06/06 00:41

最近晚上下班在看OpenCV,感觉入门还不算难,索性就记录下自己环境搭建过程,以及踩过的坑,留作以后学习使用。


1.)简单介绍

OpenCV是计算机视觉开源库,主要算法涉及图像处理和机器学习相关方法。是Intel公司贡献出来的,俄罗斯工程师贡献大部分C/C++带代码。在多数图像处理相关的应用程序中被采用,BSD许可可以免费应用在商业和研究领域。

可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效–由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#, Ruby的支持。

OpenCV理论结构

这里写图片描述

核心模块

(1).HighGUI部分
(2).Image Process
(3).2D Feature
(4).Camera Calibration and 3D reconstruction
(5).Video Analysis 视频分析
(6).Object Detection
(7).Machine Learning 机器学习
(8).GPU加速 付费的


2.)环境

1.OpenCV3.0
2.VS2015

(完全可以用最新版的,只是我也是刚开始用,怕出问题,等玩会了,以后再改过来)


3.)环境搭建

<1>下载OpenCV

这里写图片描述

(最新版本是3.3,我没有用最新的,对于入门的,版本之间没多大差别)

本篇是基于Window上开发,所以选择第三个Win pack下载,下载之后是这样的

这里写图片描述

这就是相当于一个压缩文件,我们直接右键解压就可以提取了,提取的内容默认会被放到一个opencv文件夹内容里面,所以我们不必新建文件夹存放提取的文件内容。

这里写图片描述

我们只需要看第一个文件夹build里面的内容,第二个是sources源码,里面还有些例子,可以边学边看。

build文件里面的内容:

这里写图片描述

我们目前只需要关注这三个文件夹就可以

include是我们后面要在VS里面配置的,x64和x86很多人认为是64和32位操作系统,其实不然,如果我们VS编译器选择32位就用x86文件夹里面,反之x64文件夹里面。

我用的是x86的。

打开x86文件夹看见如下内容:

这里写图片描述

vc11和vc12表示编译环境,我用的vc12,至于vc11的我没有试。

vc12下面bin需要添加到环境变量

<2> 环境配置path

复制bin目录

这里写图片描述

【我的电脑】 右键 【属性】,出现如下界面

这里写图片描述

点击 【环境变量】

这里写图片描述

选中 【path】点击 【编辑】

这里写图片描述

在某处加上复制的bin里面的内容,记得结尾要加上分号。

配置环境变量path还是挺简单的。

<3> vs 配置

OpenCV环境配好了,接下来配VS环境

【文件】 -> 【新建】 -> 【项目】

这里写图片描述

新建 【Win32控制台应用程序】,填好项目名和选好项目存储路径直接确定下一步

这里写图片描述

注意空项目要选上,然后直接点击 【完成】。

项目建好之后,有一个解决方案管理器

这里写图片描述

接下来就是重要一步添加OpenCV的配置了

如果我们在项目的属性管理器里面的属性页面添加OpenCV配置,那么我们就需要每次都配置OpenCV了,这肯定不是我们需要的。

这里写图片描述

那我们就可以在全局属性管理器界面配置属性了

【视图】 -> 【其他窗口】-> 【属性管理器】
出现一个窗口,在【Debug|Win32】上右键弹出【属性】窗口

这里写图片描述

打开属性页面

这里写图片描述

在VC++目录的【包含目录】添加以下三个目录

opencv\build\include
opencv\build\include\opencv
opencv\build\include\opencv2

这里写图片描述

在VC++目录的【库目录】添加以下lib和staticlib目录(没有staticlib可以不加)

这里写图片描述

在【链接器】-> 【输入】-> 【附加依赖项】添加链接器lib,对于debug的后面会带一个d字结尾,如下:

这里写图片描述

而release的不带d,我用的debug的,添加所有d结尾的lib文件

这里写图片描述

然后应用就可以了。

选择调试环境的配置

这里写图片描述

我的是debug 32位,大家可以根据自己的环境配置选择自己需要的。

4.) 测试代码

环境搭建好了,剩下的就是测试环境了。

新建cpp文件

【解决方案资源管理器】 -> 【源文件】
右键 【添加】->【新建项】

这里写图片描述

源文件右键添加cpp

下面是测试代码:

#include<iostream>  #include <opencv2/core/core.hpp>  #include <opencv2/highgui/highgui.hpp>  using namespace cv;int main(){    // 读入一张图片      Mat img = imread("C:\\Users\\。。。\\Desktop\\opencv资源\\girl.png");    // 创建一个名为 "test"窗口      namedWindow("test");    // 在窗口中显示 test      imshow("test", img);    // 不让窗口关闭      waitKey(0);}

运行结果
这里写图片描述


5.) 可能出现的问题

<1> 丢失MSVCP120d.dll文件

我在运行时出现这样的错误

这里写图片描述

此时我们可以切换到Release环境调试并修改链接器依赖就可以。

需要MSVCP120D.dll是说明这个EXE程序不是发布版本的,是调试版本的EXE,即debug版本的EXE,此时我们可以切换到Release环境就可以了。

此时我的【调试环境】

这里写图片描述

还有一种方案就是去网上下这个文件放到下面两个目录的其中一个目录

【SysWOW64】

这里写图片描述

【System32】

这里写图片描述

放在哪个目录和自己的VS版本有关,我的是64位的,所以放在【SysWOW64】目录下,我以前放在【System32目录下】导致一直出现那个问题。后来还是别人提醒才解决了。

<2>. 形容这样的错误

这里写图片描述

这样的错误极有可能是你的图片路径出错了,我以前写成这样的

//'\'应该改为'\\'Mat img = imread("D:\15.jpg");

导致一直出不来结果,报上面那种错误,我查了很久以为是环境配错了,后来才明白了原来是少加了一个’\’,真是基础不够啊,这种错误都会犯……… 以此为戒。

网上查到还可能是图片的后缀问题,这可能和自己的电脑环境有关,有的jpg图片放到别的电脑可能变成jpeg图片,这时要查看图片属性,根据图片属性修改后缀名,就不会出现上面的问题。


6.)参考

http://blog.csdn.net/poem_qianmo/article/details/19809337


7.)更新时间记录

2017.9.15 第一次更新 OpenCV理论结构和核心模块,可能出现的错误加了第二点。