什么是opencv?

  opencv是一个计算机视觉库。它目前有两个分支2.4.X和3.X,2.4.X版本是经典版本,网上的教程资源大多是关于它的,所以推荐使用2.4.X。

  它能帮我做什么?

  这意味着你可以在自己的程序中使用计算机视觉相关功能,但不必关注具体实现。就像你使用电脑,但并不用关注电脑内部的原理。你唯一需要知道的就是如何使用它。

  我该如何使用它?

  这就是本文的工作^-^ 。

  

  1,下载opencv

  首先到opencv官网下载win平台的opencv,解压后你可以看到下面两个文件夹——build和sources,build是官方已经为我们编译好的可以直接使用的,而sources中是opencv的源码,仅供高级玩家尝试。

  下载下来后可以大致浏览一下build文件夹下的内容:

  粗略一看就看到了熟悉的x86与x64(32位用和64位用),还有vc11和vc12,虽然以前没见过但大致也可以猜出vc11和vc12是指自己的VS中vc版本,我们可以根据自己的系统与vs版本来选择。

  2.配置环境变量

  程序中的可执行文件,必须添加到系统环境变量PATH中才能被系统识别。这就类似一所房子,你必须登记到你的名下,才能使用它。opencv也是一样,它在某些目录中提供了一些可执行文件,所以我们必须将这个目录添加到系统环境变量中。

  比如说我的可执行文件目录是E:\opencv\build\x64\vc12\bin

  配置如下:

  3.配置VS工程

    在VS中新建一个win32 application的项目(略)。

    3.1 配置头文件位置

    当你在自己的代码中使用了opencv中的类或函数时,编译器并不知道这是个怎样的物体有什么功能。这就需要我们引用对应的头文件,因为在对应的头文件中有关于这个物体的描述,这样程序才能正确编译。然而这些头文件在哪里呢?我们需要告诉编译器。

    比如我的头文件目录是:

E:\opencv\build\include
E:\opencv\build\include\opencv
E:\opencv\build\include\opencv2

将其配置到下面的“包含目录”中:

    3.2 配置库文件位置与指定库文件

    include中的头文件,只能大致的描绘opencv中的物体是怎样的有什么功能。但具体的,实现的,可运行的二进制代码全在库文件中,也就是lib文件中。只有这些具体实现的二进制代码链接到你的二进制代码中,程序才能正常工作。然而这些库文件在哪里呢?我们需要告诉编译器。

    先配置库文件位置:

    比如我的库文件位置是 E:\opencv\build\x64\vc12\lib

    将其配置到下面的“库目录”中:

    

    然后指定库文件: 

opencv_calib3d2413.lib
opencv_calib3d2413d.lib
opencv_contrib2413.lib
opencv_contrib2413d.lib
opencv_core2413.lib
opencv_core2413d.lib
opencv_features2d2413.lib
opencv_features2d2413d.lib
opencv_flann2413.lib
opencv_flann2413d.lib
opencv_gpu2413.lib
opencv_gpu2413d.lib
opencv_highgui2413.lib
opencv_highgui2413d.lib
opencv_imgproc2413.lib
opencv_imgproc2413d.lib
opencv_legacy2413.lib
opencv_legacy2413d.lib
opencv_ml2413.lib
opencv_ml2413d.lib
opencv_nonfree2413.lib
opencv_nonfree2413d.lib
opencv_objdetect2413.lib
opencv_objdetect2413d.lib
opencv_ocl2413.lib
opencv_ocl2413d.lib
opencv_photo2413.lib
opencv_photo2413d.lib
opencv_stitching2413.lib
opencv_stitching2413d.lib
opencv_superres2413.lib
opencv_superres2413d.lib
opencv_ts2413.lib
opencv_ts2413d.lib
opencv_video2413.lib
opencv_video2413d.lib
opencv_videostab2413.lib
opencv_videostab2413d.lib

    其实这就是库文件目录下的所有库文件,你可以用cmd进入对应文件夹下,用“dir /b”命令来列出所有lib文件,然后复制到下面的“附加依赖项”中:

    

  4.测试opencv

  我们简单的测试一下opencv打开一张图片并显示,代码如下:

 //读取图片并显示
#include "stdafx.h"
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat img = imread("D:\\test.jpg");
namedWindow("测试opencv");
imshow("测试opencv", img);
cvWaitKey();
}

  使用的图片如下(将图片保存到D盘根目录,并改名为test,即与程序中的一致):

  

  有了数据,有了程序,我们就可以运行了,但是千万别忽略了这个:

  运行效果(略)。

   TIP:【VS2013中如何解决error C4996: 'fopen'问题】请参考【http://jingyan.baidu.com/article/ce436649fd61543773afd32e.html】

在VS中配置并测试opencv的更多相关文章

  1. Jenkins中配置selenium测试

    Jenkins中配置selenium测试 2015/03/23 第一步在jenkins中配置selenium服务器 第二步工程配置: 第三步:执行构建: 第四步,查看报告:

  2. Android Studio中配置及使用OpenCV示例

    Android Studio配置及使用OpenCV 前言:最近在做项目移植,项目较大,在Eclipse中配置的Jni及OpenCV环境没任何问题,但是迁移到Studio中就问题一大堆,网上也找了一些资 ...

  3. OSG在WIN与VS中配置与测试

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1392531060.html Windo ...

  4. 在IntelliJ IDEA 13中配置OpenCV的Java开发环境

    准备工作: 下载IDEA 13(这里以版本13为例,后面简称IDEA): 下载Java JDK(用于配置基本的Java开发环境): 下载OpenCV 2.4.9(这里以版本2.4.9为例,据这篇文章说 ...

  5. OpenCV2学习笔记03:Qt中配置OpenCV环境

    在Qt中开发基于OpenCV的应用时,需要配置对应函数库到环境变量,这时候我们需要使用到qmake能够识别的变量来指定环境变量. INCLUDEPATH: 用于指定搜索头文件到文件夹路径. LIBS: ...

  6. 在CodeBlocks 开发环境中配置使用OpenCV (ubuntu系统)

    CodeBlocks是一个开放源代码的全功能的跨平台C/C++集成开发环境.CodeBlocks由纯粹的C++语言开发完毕,它使用了蓍名的图形界面库wxWidgets.对于追求完美的C++程序猿,再也 ...

  7. 关于Android Studio中使用jni进行opencv配置开发环境的要素秘诀

    使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到 ...

  8. linux 中配置假域名来测试

    1.linux中配置假域名 找到hosts文件进行编辑 命令:vim /etc/hosts 配置: #centos(本机IP)192.168.1.179 www.imooc.com(假域名,自己设置) ...

  9. visual studio 2013 中配置OpenCV2.4.13 姿势

    首先在path中添加 “C:\OpenCV\opencv\build\x64\vc12\bin”   (地址随实际变化) 注:添加的都是*86不使用*64 在visualstudio 2013中配置 ...

随机推荐

  1. SQL点滴23—T-SQL中的除法

    原文:SQL点滴23-T-SQL中的除法 在T-SQL中没有除法运算,但是在T-SQL中可以实现类似除法的操作Divide.一般除法操作的结果一个列来自于被除关系表,剩下的来自除关系表.这里举一个例子 ...

  2. OCP-1Z0-051-题目解析-第9题

    9. Which statement is true regarding the INTERSECT operator? A. It ignores NULL values. B. Reversing ...

  3. iOS文档序列化(对象归档)

    对象归档: 概念: 对象归档是指将对象写入文件保存在硬盘,当再次又一次打开程序时,能够还原这些对象.也称:对象序列化.对象持久化. 数据持久性的方式(事实上就是3类) 1,NSKeyedArchive ...

  4. 【SSRS】入门篇(七) -- 报表发布

    原文:[SSRS]入门篇(七) -- 报表发布 完成[SSRS]入门篇(六) -- 分组和总计后,第一份简单的报表就已完成了,下面把报表发布到报表服务器上. (实际情况下,报表展示给用户未必是用报表服 ...

  5. foreach,foreachelse

    foreach,foreachelse Table of Contents目录 iteration 用于显示当前循环的执行次数[待考] first : 当前 foreach 循环第一次执行时 firs ...

  6. Akka入门实例

    Akka入门实例 Akka 是一个用 Scala 编写的库,用于简化编写容错的.高可伸缩性的 Java 和 Scala 的 Actor 模型应用. Actor模型并非什么新鲜事物,它由Carl Hew ...

  7. Euclid Problem - PC110703

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/uva10104.html 原创:Eucl ...

  8. Weblogic Server 的下载,安装配置与部署

    下载 下载页面: http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html 目前 ...

  9. 《剑指Offer》面试题-用两个栈实现队列

    题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例.对于每个测试样例,第一行输入一个n(1<=n<=100 ...

  10. Binder机制,从Java到C (10. Binder驱动)

    Binder驱动的代码都在kernel里面,这里就简单讲一下里面涉及到的几个东西: 1.MemoryBinder其实本质上就是一中数据传输方式,这种方式是通过binder driver实现的. 我们知 ...