【OpenCV第一篇】安装OpenCV

本篇主要介绍如何下载OpenCV安装程序,如何在VS2008下安装配置OpenCV,文章最后还介绍了一个使用OpenCV的简单小例子。

《OpenCV入门指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764

可以到http://www.opencv.org.cn/index.php/Download,然后选一个较新版本下载。我下的是V2.3.1版本,下载地址是:

http://www.opencv.org.cn/download/OpenCV-2.3.1-win-superpack.exe

下载完成后,双击运行exe,选择输出目录,我选择的是D:\opencv。然后解压缩就完成了安装。安装过程如下图所示:

在“我的电脑”右击弹出“系统属性”对话框,选择“高级”再点击“环境变量”,然后再编辑path,在“编辑用户变量”对话框的变量值输入以下三条,注意用“;”来分开。

D:\opencv\opencv\build\x86\vc9\bin;

D:\opencv\opencv\build\x86\mingw\bin;

D:\opencv\opencv\build\common\tbb\ia32\vc9;

在VS2008中点击“工具”,再点击“选项”,然后选择“项目和解决方案”,手动加入库文件,引用文件和包含文件即可完成OpenCV在VS2008的导入。

下面是最简单的OpenCV使用例子,功能也很简单——加载图像文件并显示出来。代码如下:

  1. //显示图像文件
  2. #include <opencv2/opencv.hpp>
  3. using namespace std;
  4. #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
  5. int main()
  6. {
  7. const char *pstrImageName = "冲浪大师赛001.jpg";
  8. const char *pstrWindowsTitle = "OpenCV第一个程序(http://blog.csdn.net/MoreWindows)";
  9. //从文件中读取图像
  10. IplImage *pImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);
  11. //创建窗口
  12. cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);
  13. //在指定窗口中显示图像
  14. cvShowImage(pstrWindowsTitle, pImage);
  15. //等待按键事件
  16. cvWaitKey();
  17. cvDestroyWindow(pstrWindowsTitle);
  18. cvReleaseImage(&pImage);
  19. return 0;
  20. }

对代码中的主要函数进行下讲解:

1.创建窗口 cvNamedWindow

函数名称:cvNamedWindow 
函数功能:创建窗口 
函数原型:
int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );
参数说明:
第一个参数表示窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。被创建的窗口可以通过它们的名字被引用。 
第二个参数表示窗口属性标志。目前唯一支持的标志是CV_WINDOW_AUTOSIZE。当这个标志被设置后,用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像。 
函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。
注意:
如果已经存在这个名字的窗口,这个函数将不做任何事情。

2.在指定窗口中显示图像 cvShowImage

函数名称:cvShowImage 
函数功能:在指定窗口中显示图像 
函数原型:
void cvShowImage(
const char* name, const CvArr* image );
参数说明:
第一个参数:窗口的名字。 
第二个参数:被显示的图像。 

3.等待按键事件 cvWaitKey

函数名称:cvWaitKey

函数功能:等待按键事件

函数原型:
int cvWaitKey( int delay=0 );
参数说明:

第一个参数:延迟的毫秒数,当delay<=0时表示无限等待。

函数返回值:

如果超过指定时间则返回-1,否则返回被按键的值。

编译,居然出错了!!错误信息如下:

1>正在链接...

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvReleaseImage,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvDestroyWindow,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvWaitKey,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvShowImage,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvNamedWindow,该符号在函数_main 中被引用

1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvLoadImage,该符号在函数_main 中被引用

现在如何解决这个问题了?既然是在链接时出的错,说明肯定有静态库没有被编译器找到。因此我们在VS2008中点击“项目”,再点击“属性”,依次展开“配置属性”-->“链接器”-->“输入”在“附加依赖项中”添加如下静态文件。

opencv_calib3d231d.lib opencv_contrib231d.lib opencv_core231d.lib opencv_features2d231d.lib opencv_flann231d.lib opencv_gpu231d.lib opencv_highgui231d.lib opencv_imgproc231d.lib opencv_legacy231d.lib
opencv_ml231d.lib opencv_objdetect231d.lib opencv_ts231d.lib opencv_video231d.lib

再编译,成功。程序运行结果如下图所示:

呵呵,很酷的冲浪~~

下面列出OpenCV入门指南目录,方便大家查看。

1.《【OpenCV入门指南】第一篇安装OpenCV

2.《【OpenCV入门指南】第二篇缩放图像

3.《【OpenCV入门指南】第三篇Canny边缘检测

4.《【OpenCV入门指南】第四篇图像的二值化

5.《【OpenCV入门指南】第五篇轮廓检测上

6.《【OpenCV入门指南】第六篇轮廓检测下

7.《【OpenCV入门指南】第七篇线段检测与圆检测

8.《【OpenCV入门指南】第八篇灰度直方图

9.《【OpenCV入门指南】第九篇灰度直方图均衡化

10.《【OpenCV入门指南】第十篇彩色直方图均衡化

11.《【OpenCV入门指南】第十一篇鼠标绘图

12.《【OpenCV入门指南】第十二篇无法运行OpenCV程序?

13.《【OpenCV入门指南】第十三篇人脸识别

14.《【OpenCV入门指南】第十四篇  Haartraining》即将发布

转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8225783

《OpenCV入门指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/1291764


【OpenCV第一篇】安装OpenCV的更多相关文章

  1. 【OpenCV入门指南】第一篇 安装OpenCV

    http://blog.csdn.net/morewindows/article/details/8225783/ win10下vs2015配置Opencv3.1.0过程详解(转) http://ww ...

  2. OpenCV 第一课(安装与配置)

    OpenCV 第一课(安装与配置) win10,opencv-2.4.13, 安装, vs2013, 配置 下载安装软件 官网OpenCV下载地址下载最新版本,我下载的是opencv.2.4.13,然 ...

  3. OPENCV第一篇

    了解过之前老版本OpenCV的童鞋们都应该清楚,对于OpenCV1.0时代的基于 C 语言接口而建的图像存储格式IplImage*,如果在退出前忘记release掉的话,就会照成内存泄露.而且用起来超 ...

  4. Opencv入门-第一回-梦牵机器视觉翼,初识Opencv域(安装Opencv)

    各位看官,您是不是瞅着Opencv进来的?(你这不是废话吗>_>) 这Opencv(开源计算机视觉库)啊,说来话长,最初是上个世纪末(1999年)由Intel建立起来的.近十多年人工智能这 ...

  5. 第一篇 -- 安装和配置PyQt5

    我的电脑环境是:Win10 + Python3.6.4 + JetBrains PyCharm 2017.3.2 x64 之前用tkinter写界面,现在学习如何用PyQt5写界面. 安装PyQt5: ...

  6. OpenResty 安装及使用(第一篇安装)

    OpenResty搭建 1.openResty介绍 OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模 ...

  7. Node 之 Express 学习笔记 第一篇 安装

    最近由于工作不忙,正好闲暇时间学学基于 node 的 web开发框架. 现在关于web开发框架除了Express 还有新出的 KOA以及其它一些. 但是想想还是先从 Express 入手吧.因为比较成 ...

  8. NODEJS环境搭建 第一篇 安装和部署NODEJS

    一.下载安装文件 根据自己当前系统环境,下载相对应的安装文件 https://nodejs.org/en/download/ 二.双击安装 都傻瓜式的安装步骤,一步一步安装就好了. 三.检查安装结果 ...

  9. Oracle学习第一篇—安装和简单语句

    一 安装  10G ----不适合Win7 Visual Machine-++++Visual Hard Disk 先安装介质(VM)---便于删除 11G-----适合Win7 1 把win64_1 ...

随机推荐

  1. window.location.Reload()和window.location.href 区别

    首先介绍两个方法的语法: reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet])参数: bForceGet, 可选参数, 默认为 false, ...

  2. Windows下memcache安装使用

    Windows下Memcache安装 随着时间的推移,网上现在能找到的在 Windows下安装 Memcache 的文档大多已经过时.雪峰这里再简要介绍一下当下最新版的安装和配置方法. Memcach ...

  3. .Net中的socket编程例子

    vb2010: '发送端代码Public Class Form1    Inherits System.Windows.Forms.FormPrivate Sub Button1_Click(ByVa ...

  4. struts2与cookie实现自动登录和验证码验证

    主要介绍struts2与cookie结合实现自动登录 struts2与cookie结合时要注意采用.action 动作的方式实现cookie的读取 struts2的jar包 链接数据库文件 db.pr ...

  5. PopupWindow使用

    PopupWindow使用 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的. PopupWindow使用Demo 这 ...

  6. IOS UIwebview 背景色调整

    自定义webview背景色  重点是把webview弄成透明的 然后把self.view的背景调色即可 UIWebview 背景透明处理 让 UIWebView 背景透明需要以下设置 web_abou ...

  7. 【阿里云产品公测】阿里云OpenSearch初次使用评测

    作者:阿里云用户 bailimei 从一开始我就对opensearch非常陌生,这是我第一次接触它,本以为对我来说上手难度会比较大,看完帮助信息后我决定试用看看,经试用后我发现阿里云opensearc ...

  8. RegisterStartupScript和RegisterClientScriptBlock的用法

    RegisterStartupScript和RegisterClientScriptBlock的用法 RegisterStartupScript(key, script) RegisterClient ...

  9. Genymotion——PC上也能玩部落冲突 Clash of Clans

    零.前言 部落冲突(Clash of Clans)是手机上一个很不错的联机对战游戏,安卓和iOS平台上都有. 最近玩这个略上瘾,前几天看到部落里有人说用模拟器可以在电脑上玩,就想自己试试. 不想看我啰 ...

  10. hdu 4081 最小生成树+树形dp

    思路:直接先求一下最小生成树,然后用树形dp来求最优值.也就是两遍dfs. #include<iostream> #include<algorithm> #include< ...