龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

OpenCV初次使用配置及编程示例

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
最近开始做一个多点触控的课题,网上查阅许多资料后,发现已有先辈把核心函数写好,并建立了一个库――Touchlib.而Touchlib库函数最终调用的是OpenCV里的函数,为了在自己的课题方案

   最近开始做一个多点触控的课题,网上查阅许多资料后,发现已有先辈把核心函数写好,并建立了一个库――Touchlib.而Touchlib库函数最终调用的是OpenCV里的函数,为了在自己的课题方案中借鉴Touchlib的成熟算法,有必要熟悉Touchlib,因此势必了解OpenCV在VC下的使用。我从网上下载了OpenCV 1.0,依步骤安装到“J:Program FilesOpenCV”目录下。在使用VC 6.0调用OpenCV之前,还需做如下配置:

   (1)运行VC 6.0,打开opencv/_make目录下的opencv.dsw文件 然后点击'组建(Build)'->' 批组建(Batch Build)'(编译大概几分钟)。

   (2)点击'工具(Tools)'->'选项(Options)'->'目录(Directories)选项卡', 在Include files下添加:

 J:Program FilesOpenCVcvinclude

J:Program FilesOpenCVotherlibshighgui

J:Program FilesOpenCVcxcoreinclude

J:Program FilesOpenCVotherlibscvcaminclude 

   (3)在Library files下添加

 J:Program FilesOpenCVlib

   (4)在Source files下添加

 J:Program FilesOpenCVcvsrc

J:Program FilesOpenCVcxcoresrc

J:Program FilesOpenCVcvauxsrc

J:Program FilesOpenCVotherlibshighgui

J:Program FilesOpenCVotherlibs_graphicssrc

   (5)|*谨记*|:每次建立工程,运行前在'工程(Project)'->'设置(Settings)'->'连接(Link)选项卡'->'对象/库模块(Object/library modules)' 中添加:

 cv.lib highgui.lib cxcore.lib cvcam.lib

   下面给出我所编写的一个简单的应用OpenCV的例子。

   (1)建立一个基于Dialog的MFC工程OpenCV_Dlg1,在头文件OpenCV_Dlg1Dlg.h中加入“#include ”,“#include ”宏命令语句。

   (2)添加Picture控件,ID号为IDC_SHOW_WINDOW,图像将显示在该控件中。

   (3)给COpenCV_Dlg1Dlg类添加成员变量IplImage * m_cvImage,属性为Public.并在构造函数COpenCV_Dlg1Dlg::COpenCV_Dlg1Dlg()中将其初始化为NULL,即添加“m_cvImage=NULL;”语句。

   (4)OpenCV有现成的函数cvShowImage()来显示图像,但用该函数显示图像是却是另外开辟了一个弹出窗口并在其中显示,为了在我们建立的Picture控件中显示图像,需在COpenCV_Dlg1Dlg类中添加成员函数void DrawPicToHDC(IplImage *img, UINT ID),属性设置为Public.DrawPicToHDC()函数代码为:

 //----------------------------------------------------------------------------

void COpenCV_Dlg1Dlg::DrawPicToHDC(IplImage *img, UINT ID)

{

CDC *pDC = GetDlgItem(ID)->GetDC();

HDC hDC= pDC->GetSafeHdc();

CRect rect;

CWnd * pWnd;

pWnd=GetDlgItem(ID);

pWnd->SetWindowPos( NULL,0,0,img->width,img->height,SWP_NOZORDER | SWP_NOMOVE );

pWnd->GetClientRect(&rect);

CvvImage cimg;

cimg.CopyOf(img);

cimg.DrawToHDC(hDC,&rect);

ReleaseDC(pDC);

}

//==========================================

精彩图集

赞助商链接