zoukankan      html  css  js  c++  java
  • 【OpenCV入门指南】第一篇 安装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使用样例,功能也非常easy——载入图像文件并显示出来。代码例如以下:

    //显示图像文件
    #include <opencv2/opencv.hpp>
    using namespace std;
    
    #pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"")
    
    int main()
    {
    	const char *pstrImageName = "冲浪大师赛001.jpg";
    	const char *pstrWindowsTitle = "OpenCV第一个程序(http://blog.csdn.net/MoreWindows)";
    
    	//从文件里读取图像
    	IplImage *pImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);
    
    	//创建窗体
    	cvNamedWindow(pstrWindowsTitle, CV_WINDOW_AUTOSIZE);
    
    	//在指定窗体中显示图像
    	cvShowImage(pstrWindowsTitle, pImage);
    
    	//等待按键事件
    	cvWaitKey();
    
    	cvDestroyWindow(pstrWindowsTitle);
    	cvReleaseImage(&pImage);
    	return 0;
    }

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

     

    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 


  • 相关阅读:
    Shell学习(八)——dd命令
    PLSQL导出oracle表结构和数据
    如何让Linux 机器CPU使用率变高
    WebService学习总览
    Java发HTTP POST请求(内容为xml格式)
    Oracle—回车、换行符
    Oracle—merge into语法
    Apache解析和绑定域名
    MySQL根据经纬度按距离排序
    jquery监听input
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4025614.html
Copyright © 2011-2022 走看看