OpenCV入门指南

Posted heishanglaoyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV入门指南相关的知识,希望对你有一定的参考价值。

【OpenCV第一篇】安装OpenCV

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

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

一.OpenCV的下载

可以到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。然后解压缩就完成了安装。安装过程如下图所示:

技术分享图片

 

二.在我的电脑中配置OpenCV

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

D:opencvopencvuildx86vc9in;

D:opencvopencvuildx86mingwin;

D:opencvopencvuildcommon bbia32vc9;

技术分享图片

 

三.在VS2008中加入OpenCV

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

技术分享图片

技术分享图片

技术分享图片

 

四.第一个OpenCV程序

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

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

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

 

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

 

技术分享图片

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

技术分享图片

 

呵呵,很酷的冲浪~~

 

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

















以上是关于OpenCV入门指南的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV | OpenCV实战从入门到精通系列四 --常用函数讲解

OpenCV入门指南第二篇 缩放图像

OpenCV | OpenCV实战从入门到精通系列四 --常用函数讲解

OpenCV | OpenCV实战从入门到精通系列三 --canny边缘检测

OpenCV轻松入门——OpenCV入门

OpenCV | OpenCV实战从入门到精通系列三 --canny边缘检测