VC++2005环境下OpenCV的使用

1        OpenCV简介

  计算机视觉是让计算机和周围的环境交换信息,并进行一定的处理。在人眼看来,物体有两种状态:静止和运动;同样,计算机识别出来的格式有图形和视频两种。无论是对于静止的图像,还是运动的视频,OpenCV都提供了一系列实用且高效简单的函数。那么什么是OpenCV呢?OpenCVOpen Source Vision Library,开源计算机视觉库的简称,它由一系列的C函数和少量的C++类组成,用于数字图像处理和计算机视觉,支持绝大部分的图像格式,如bmpdibjpegjpgpng等。OpenCV充分利用多核处理器的优势,采用优化的C代码编写,目标是尽快地执行程序,关注实时系统的应用[1]

 

2 获取OpenCV

OpenCV是由Intel支持的开源项目,它的安装程序和文档都能从Intel的网站免费下载,同时OpenCV也有自己的网站http://sourceforge.net/,中文网站是http://www.opencv.org.cn/[2]。可以运行在WindowsLinuxMac等操作系统上。目前最新的版本是OpenCV2.1

本文基于Windows 32位操作系统和Microsoft Visual Studio 2005 Express Edtion,使用OpenCV-2.0.0

 

3        安装

将下载的压缩包解压到C:/OpenCV2.0。打开lib文件夹可以看到里面文件的后缀名是.dll.aA文件,不是.lib的库文件。这是因为在OpenCV2.0中,放弃了之前版本的.lib文件。A文件是在Linux下编译用的,在Windows下使用库文件,需要将A文件转换成我们需要的.lib库文件。

CMake是一个功能非常强大的编译自动配置工具,它可以根据不同的平台,不同的编译器,生成相应的Makefile或者vcproj项目。我们知道在Visual Studio 2005环境下,可以生成debugrelease两个版本的应用程序,使用CMake也能达到这个效果。debug版是可以调试的应用程序,但是没有进行优化;release版是优化后进行发布的应用程序[3]

运行CMake,源代码定位到CMakeLists.txt所在的目录,假设目标定位到Cmake_Compile_Result文件夹,选择合适的编译器,配置后即生成OpenCV.sln解决方案文件和一系列的工程文件。在Visual Studio 2005环境中打开解决方案,在debug模式下重新生成解决方案,在解决方案资源管理器里找到INSTALL,选择菜单栏的“生成”,“生成解决方案”;在release模式下执行同样的操作。这样,在Cmake_Compile_Result/lib/debug里面就会出现生成的debug模式的库文件,在Cmake_Compile_Result/lib/release里面就会出现生成的release模式的库文件,它们的头文件在Cmake_Compile_Result/include/opencv里面[4]。与OpenCV1.0不同的是,OpenCV2.0生成的库文件是* 200d.lib*代表不同的函数库名称。

 

 

4        配置

Visual Studio 2005环境下新建一个基于C++语言的控制台应用程序,然后包含头文件,具体做法是:在菜单选项中选择“项目”,“属性”,弹出属性页对话框,“配置”和“平台”的下拉框均选“活动”,在左边的树形目录选择“配置属性”,“链接器”,“输入”,在“附加依赖项”中添入上一步生成的6个库文件的名称,空格分开。“确定”,关闭窗口这样就可以进行程序的书写了。

 

5        使用示例

 

5.1      图像显示

输入:一副图像的名字

输出:图像

程序实现源码:

#include "stdafx.h"

#include <cv.h>

#include <highgui.h>

int main(int argc, char** argv)

{

                            cvNamedWindow("显示图像",CV_WINDOW_AUTOSIZE);//新建一个窗体,用来显示图像

                            IplImage* image;//创建一个图像对象

                            //用户输入的参数个数正确,且图像不为空。

                            if ((argc==2)&&((image=cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR))!=0))

                            {

                                      cvShowImage("这是载入的图像",image);//显示图像

                            }

                            cvWaitKey(0);//等待用户按esc键结束程序

                            cvReleaseImage(&image);//释放图像空间

                            cvDestroyWindow("显示图像");//释放窗体

                            return 0;

}

         运行:在dos下定位到生成的可执行文件。输入第一个参数,应用程序的名称,第二个参数,将要显示的图像的名称,附带后缀。

 

5.2      显示摄像头获取的视频流

程序实现源码:

#include "stdafx.h"

#include <cv.h>

#include <highgui.h>

int main(int argc, char** argv)

{

CvCapture* capture=cvCreateCameraCapture(0);//创建一个capture对象

                            IplImage* frame_image;

                            while (1)

                            {

                                     frame_image=cvQueryFrame(capture);//用图像读取视频流的一帧

                                     if(!frame_image)

                                     {

                                               break;

                                     }

                                     cvShowImage("视频流",frame_image);

                                     char c=cvWaitKey(33);

                                     if (c==27)//用户要求停止

                                     {

                                               break;

                                     }

                            }

                            cvReleaseImage(&frame_image);

                            cvReleaseCapture(&capture);

                            return 0;

}

 

6        结语

本文在Windows平台上使用Visual Studio 2005实现了OpenCV函数库的调用,然而OpenCV还可以在Linux等其他操作系统上使用,具体的配置链接本文暂不叙述。OpenCV具有强大的数字图像处理能力,能够进行运动跟踪、摄像机定标、图像转换、机器学习等等功能,这些都会在将来得到广泛应用。

 

 

参考文献

 

[1] Gary Bradski, Adrian Kaebler ,于仕琪,刘瑞祯 . 学习OpenCV. 北京:清华大学出版社, 2009.

[2] 马桂珍,朱玲赞,段丽. 基于OpenCV的视频应用程序的开发方法. 现代电子技术. 2007年第4.

[3] Marc, Clifton, TheAres. C#ReleaseDebug模式下调试跟踪程序的原则和方法. 程序员. 2002年第12

[4] mailrabbit, VS 2005 opencv 2.0的安装.http://hi.baidu.com/mailrabbit/blog/item/d1248dcbd9a5088cc91768d0.html, 20091114

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值