VS2010中应用OPENCV步骤

VS2010中应用OPENCV步骤
VS2010中应用OPENCV步骤

VS2010的MFC中应用opencv步骤

王良元2011.11.17

如下步骤前提是VC6和Opencv均已正确安装,默认opencv是装在C:\Program Files下,后面路径都是这个,如果安装到其他位置,只要改为你安装路径即可。

1、打开VS2010,新建MFC工程,命名,此处为VS2010_OPENCV,如图1

所示。

2、点击OK后,依次根据需要选择对应的形式,此处依次为基本对话框

(Dialog based)、去掉UNICODE字符集选项,默认的、静态编译(As a statically linked library),完成,则弹出基本应用程序界面,如图2所示。

3、删除文本框“TODO:在这里设置对话框”,并添加一个图片控件,选中控件,右键-》属性,将“Type”选择为框架(rectangle),将ID改为IDC_ShowImg,适当调整控件大小,添加两个按钮,一个将caption改为ReadImg,实现读入图片功能,另一个将aption改为EdgeDetect,实现边缘检测功能,如图3所示。

4、在MFC工程中添加opencv的库和头文件,在VS2010中新建工程后,在工程名上右键-》

属性-》配置属性-》VC++目录的右边分别添加包含目录和库目录,如下图所示

具体添加内容为:

头文件路径:

C:\Program Files\OpenCV\cxcore\include

C:\Program Files\OpenCV\cv\include

C:\Program Files\OpenCV\cvaux\include

C:\Program Files\OpenCV\otherlibs\highgui

C:\Program Files\OpenCV\otherlibs\cvcam\include

库文件路径:

C:\Program Files\OpenCV\lib

5、在“解决方案管理器”面板点击头文件,在VS2010_OPENCVDlg.h 下加入如下代码:

#include"cv.h"

#include"highgui.h"

#define IMAGE_WIDTH256

#define IMAGE_HEIGHT256

#define IMAGE_CHANNELS3

然后,在stdafx.h的#include下面添加

#pragma comment(lib,"C:\\Program Files\\OpenCV\\lib\\cv.lib")

#pragma comment(lib,"C:\\Program Files\\OpenCV\\lib\\cvaux.lib")

#pragma comment(lib,"C:\\Program Files\\OpenCV\\lib\\cxcore.lib")

#pragma comment(lib,"C:\\Program Files\\OpenCV\\lib\\highgui.lib")

在类视图面板右击VS2010_O pencv Dlg,右键添加-》添加变量,添加一个IplImage*类型的变量TheImage,如下图,

再双击类视图下面的OnInitDialog,在“////TODO:在此添加额外的初始化代码“

”下面添加TheImage的初始化代码:

CvSize ImgSize;

ImgSize.height=IMAGE_HEIGHT;

ImgSize.width=IMAGE_WIDTH;

TheImage=cvCreateImage(ImgSize,IPL_DEPTH_8U,IMAGE_CHANNELS);然后双击OnPaint,在if(IsIconic())…的else里添加以下代码,用来重绘窗口:CDialog::OnPaint();//重绘对话框

CDialog::UpdateWindow();//更新windows窗口,如果无这步调用,

图片显示还会出现问题

ShowImage(TheImage,IDC_ShowImg);//重绘图片函数

接着在CTest_OpencvApp下面的成员列表中双击InitInstance,在两个“//TODO: Place code here to handle when the dialog is…”下面添加:

cvReleaseImage(&dlg.TheImage);即按下“OK”或“Cancel”时,释放TheImage占用的内存。

6、接下来就是写读取和处理图片的功能函数了。

在资源视图面板双击IDD_VS2010_OPENCV_DIALOG,弹出GUI编辑界面,双击按钮ReadImg,建立按钮点击的消息响应程序,方法为右键按-》添加信息处理事件,函数处理程序名称设置为OnBnClickedReadimg,进入代码编辑,

主要的响应操作包括弹出对话框选择图片文件、读入图片文件、对图片统一缩放至256*256的大小、显示图像,代码如下:

//TODO:Add your control notification handler code here

CFileDialog dlg(

TRUE,_T("*.bmp"),NULL,

OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,

_T("image files(*.bmp;*.jpg)|*.bmp;*.jpg|All Files(*.*)|*.*||"), NULL

);//选项图片的约定

dlg.m_ofn.lpstrTitle=_T("Open Image");//打开文件对话框的标题名

if(dlg.DoModal()!=IDOK)//判断是否获得图片

return;

CString mPath=dlg.GetPathName();//获取图片路径

IplImage*ipl=cvLoadImage(mPath,1);//读取图片、缓存到一个局部变量ipl中

if(!ipl)//判断是否成功载入图片

return;

if(TheImage)//对上一幅显示的图片数据清零cvZero(TheImage);

ResizeImage(ipl);//对读入的图片进行缩放,使其宽或高最大值者刚好等于256,再复制到TheImage中

ShowImage(TheImage,IDC_ShowImg);//调用显示图片函数

cvReleaseImage(&ipl);//释放ipl占用的内存

其中包含了两个新的成员函数ResizeImage和ShowImage,前者的作用是对读入的不同大小的图像进行缩放,再通过设置ROI的方式将图像存入256*256的TheImage中;后者是将图像TheImage显示到图片显示控件IDC_ShowImg窗口的正中部位。为了实现这两个功能,首先在类视图面板右击C VS2010_OPENCV Dlg,选择添加》添加函数,创建两个函数:void ResizeImage(IplImage*img)和void

ShowImage(IplImage*img,UINT ID),记得参数写完一个一定要点击下面的添加按钮,在右边可以看到添加的参数,如下图。

以下是这两个函数的实现代码:

void CTest_OpencvDlg::ResizeImage(IplImage*img)

{

//读取图片的宽和高

int w=img->width;

int h=img->height;

//找出宽和高中的较大值者

int max=(w>h)?w:h;

//计算将图片缩放到TheImage区域所需的比例因子

float scale=(float)((float)max/256.0f);

//缩放后图片的宽和高

int nw=(int)(w/scale);

int nh=(int)(h/scale);

//为了将缩放后的图片存入TheImage的正中部位,需计算图片在TheImage左上角的期望坐标值

int tlx=(nw>nh)?0:(int)(256-nw)/2;

int tly=(nw>nh)?(int)(256-nh)/2:0;

//设置TheImage的ROI区域,用来存入图片img

cvSetImageROI(TheImage,cvRect(tlx,tly,nw,nh));

//对图片img进行缩放,并存入到TheImage中

cvResize(img,TheImage);

//重置TheImage的ROI准备读入下一幅图片

cvResetImageROI(TheImage);

}

void CTest_OpencvDlg::ShowImage(IplImage*img,UINT ID)//ID是Picture Control控件的ID号

{

CDC*pDC=GetDlgItem(ID)->GetDC();//获得显示控件的DC

HDC hDC=pDC->GetSafeHdc();//获取HDC(设备句柄)来进行绘图操作

CRect rect;

GetDlgItem(ID)->GetClientRect(&rect);

int rw=rect.right-rect.left;//求出图片控件的宽和高

int rh=rect.bottom-rect.top;

int iw=img->width;//读取图片的宽和高

int ih=img->height;

int tx=(int)(rw-iw)/2;//使图片的显示位置正好在控件的正中int ty=(int)(rh-ih)/2;

SetRect(rect,tx,ty,tx+iw,ty+ih);

CvvImage cimg;

cimg.CopyOf(img);//复制图片

cimg.DrawToHDC(hDC,&rect);//将图片绘制到显示控件的指定区域内

ReleaseDC(pDC);

}

7、最后是要对读入的图像做简单的Canny边缘处理,右键EdgeDetect按钮,添加事件处理程序,将函数处理程序名称改为“OnBnClickedEdgedetect“,相应的响应代码如下:

void CTest_OpencvDlg::OnBnClickedEdgedetect()

{

//TODO:Add your control notification handler code here

IplImage*gray=0,*edge=0;

gray=cvCreateImage(cvSize(IMAGE_WIDTH,IMAGE_HEIGHT), IPL_DEPTH_8U,1);

edge=cvCreateImage(cvSize(IMAGE_WIDTH,IMAGE_HEIGHT), IPL_DEPTH_8U,1);

cvCvtColor(TheImage,gray,CV_BGR2GRAY);

cvCanny(gray,edge,30,100,3);

cvCvtColor(edge,TheImage,CV_GRAY2BGR);

ShowImage(TheImage,IDC_ShowImg);//调用显示图片函数cvReleaseImage(&gray);

cvReleaseImage(&edge);

}

7、最后,点击绿色三角形图标进行编译运行,可看到结果如下

基于OpenCv的图像识别

基于2DPCA的人脸识别算法研究 摘要 人脸识别技术是对图像和视频中的人脸进行检测和定位的一门模式识别技术,包含位置、大小、个数和形态等人脸图像的所有信息。由于近年来计算机技术的飞速发展,为人脸识别技术的广泛应用提供了可能,所以图像处理技术被广泛应用了各种领域。该技术具有广阔的前景,如今已有大量的研究人员专注于人脸识别技术的开发。本文的主要工作内容如下: 1)介绍了人脸识别技术的基础知识,包括该技术的应用、背景、研究方向以及 目前研究该技术的困难,并对人脸识别系统的运行过程以及运行平台作了简单的介绍。 2)预处理工作是在原始0RL人脸库上进行的。在图像的预处理阶段,经过了图 象的颜色处理,图像的几何归一化,图像的均衡化和图象的灰度归一化四个过程。所有人脸图像通过上述处理后,就可以在一定程度上减小光照、背景等一些外在因素的不利影响。 3)介绍了目前主流的一些人脸检测算法,本文采用并详细叙述了Adaboost人脸 检测算法。Adaboost算法首先需要创建人脸图像的训练样本,再通过对样本的训练,得到的级联分类器就可以对人脸进行检测。 4)本文介绍了基于PCA算法的人脸特征点提取,并在PCA算法的基础上应用了 改进型的2DPCA算法,对两者的性能进行了对比,得出后者的准确度和实时性均大于前者,最后将Adaboost人脸检测算法和2DPCA算法结合,不仅能大幅度降低识别时间,而且还相互补充,有效的提高了识别率。 关键词:人脸识别 2DPCA 特征提取人脸检测

2DPCA Face Recognition Algorithm Based on The Research Abstract:Face recognition is a technology to detect and locate human face in an image or video streams,Including location, size, shape, number and other information of human face in an image or video streams.Due to the rapid development of computer operation speed makes the image processing technology has been widely applied in many fields in recent years. This paper's work has the following several aspects: 1)Explained the background, research scope and method of face recognition,and introduced the theoretical method of face recognition field in general. 2)The pretreatments work is based on the original ORL face database. In the image preprocessing stage, there are the color of the image processing, image geometric normalization, image equalization and image gray scale normalization four parts. After united processing, the face image is standard, which can eliminate the adverse effects of some external factors. 3)All kinds of face detection algorithm is introduced, and detailed describing the Adaboost algorithm for face detection. Through the Adaboost algorithm to create a training sample,then Training the samples of face image,and obtaining the cascade classifier to detect human face. 4)This paper introduces the facial feature points extraction based on PCA ,and 2DPCA is used on the basis of the PCA as a improved algorithm.Performance is compared between the two, it is concluds that the real time and accuracy of the latter is greater than the former.Finally the Adaboost face detection algorithm and 2DPCA are combined, which not only can greatly reduce the recognition time, but also complement each other, effectively improve the recognition rate. Key words:Face recognition 2DPCA Feature extraction Face detection

OpenCV主要函数介绍

4.1 OpenCV主要函数介绍 1) cvLoadImage 从文件中读取图像 IplImage* cvLoadImage(const char* filename,int flags=CV_LOAD_IMAGE_COLOR ); 函数cvLoadImage从指定文件读入图像,返回读入图像的指针。其中filename是要被读入的文件的文件名;flags指定读入图像的颜色和深度。 2)cvSaveImage 保存图像到文件 int cvSaveImage( const char* filename, const CvArr* image ); 函数cvSaveImage保存图像到指定文件。其中filename保存文件名。image 要保存的图像。图像格式的的选择依赖于filename的扩展名,只有8位单通道或者3通道(通道顺序为'BGR' )可以使用这个函数保存。 3)cvQueryFrame从摄像头或者文件中抓取并返回一帧 IplImage* cvQueryFrame( CvCapture* capture ); 函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。返回的图像不可以被用户释放或者修改。其中capture视频获取结构。。 4)cvCaptureFromCAM 初始化摄像头 CvCapture* cvCaptureFromCAM( int index ); 函数cvCaptureFromCAM给从摄像头的视频流分配和初始化CvCapture结构。 其中index要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。 5)cvHaarDetectObjects 用来检测图像中的人脸区域 CV API(CvSeq*) cvHaarDetectObjects( const CvArr* image, CvHaarClassifierCascade* cascade, CvMemStorage* storage, double scale_factor CV_DEFAULT(1.1), int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0), CvSize min_size CV_DEFAULT(cvSize(0,0)), CvSize max_size CV_DEFAULT(cvSize(0,0))); 用于快速检测人脸区域,便于提取得到人脸数据。其中image 为被检图像,cascade为 haar分类器级联的内部标识形式,storage 为用来存储检测到的一

opencvVS使用说明

1.打开opencv2.4.9.exe,指定安装位置(文件解压位置),解压后包含两个文件夹build、source,build文件夹中包含静态链接库文件和动态链接库文件,source文件夹包含opencv函数的源码以及训练好的分类器以及训练好的分类器。 (1)提取build文件夹下include文件夹备用(第12步使用); (2)提取build/x86/vc10目录下的bin文件夹、lib文件夹备用。(说明:x86文件夹中链接库文件是VS默认win32平台 下32位编译器,如果设置VS编译平台为64位则需要x64 文件夹的链接库;vc10文件夹的链接库对应VS2010开发平 台,vc11未知,vc12对应VS2012及以上的开发平台) 图1 opencv解压得到的两个文件夹图2 build文件夹include 图3 build/x86/vc10文件夹下bin、lib分别存放动态静态链接库文件

图4 source文件夹中data文件夹中的haarlike级联分类器、hog分类器、lbp分类器,主要对人脸、五官、微笑、行人等做分类检测 2.打开VS,新建一个Win32控制台应用程序 3.点击下一步然后去掉预编译头,选择空项目

4.点击完成,找到解决方案管理器,右键工程名

5.配置属性->VC++目录 6.在可执行文件目录编辑输入../bin 然后点击确定

7.在包含目录分别输入../include ../include/opencv ../inclide/opencv2 然后点击确定 8.在库目录输入../lib 然后点击确定

基于opencV的动态背景下运动目标检测及跟踪(修改版)

基于openCV的动态背景下的运动目标检测 摘要:介绍在动态背景下对视频图像序列进行运动目标的检测,主要包括三个步骤,分别是运动估计,运动补偿和目标检测。在运动估计中采用的主要是基于特征点匹配算法。这种算法与传统的块匹配算法最大的好处在于它的数据量少,计算简单迅速而且图像的匹配可靠性更高。最后用计算机视觉类库openCV进行实现。 关键词:运动目标检测;openCV;特征点匹配 Moving Object Detection in the Dynamic Background Based on openCV Abstract:Introducing a moving object detection algorithm of the dynamic background in the video image sequence,which includes three steps. They are motion estimation, motion compensation and object detection. At the motion estimation, we take an algorithm based on the feature points matching. The advantages of this algorithm is that it needs fewer data and indicates faster calculating speed compared to the block matching algorithm. What’s more, the matching of the video image sequence is more reliable. Then used openCV realized the algorithm. Keywords: moving object detection; openCV; feature points matching 引言 在生活中摄像头可以说随处可见,我们经常需要对视频中的运动目标进行相关操作,这就设涉及到了对运动目标的检测及跟踪。作为视觉领域的一部分,它不仅对我们的生活,在军事,医学等各种领域里都有着广泛的影响。 所谓运动目标的检测就是在一段序列图像中检测出变化区域,并将运动目标从背景图像中提取出来[2],它是基础,能否正确的检测与分割出运动目标对后续的工作有着巨大的影响。常见的运动目标检测方法有:背景差分法,帧差法,累积差分法,光流法。本文主要介绍的是一种在动态背景下对运动目标进行检测的算法。 检测算法介绍 检测算法有很多种,不同的算法有他们各自的利与弊。背景差分法:是事先将背景图像存储下来,再与观测图像进行差分运算,实现对运动区域的检测。这种方法能得到较为完整的运动目标信息,但背景图像必须随着外部条件比如光照等的变化而不断更新,所以背景模型的获取和更新比较麻烦。帧差法:直接比较相邻两帧图像对应像点的灰度值的不同,然后通过阈值来提取序列图像中的运动区域[2]。这种方法更新速度快,算法简单易实现,适应性强,不需要获取背景图像。但是背景与运动目标间需要有一定程度的灰度差,否则可能在目标内部产生空洞,不能完整的提取出运动目标。为了改进相邻两帧间的差分效果,人们提出了累积差分法。累积差分法是利用三帧图像计算两个差分图像,再令其对应像素相乘的算法。它通过分析整个图像序列的变化来检测小位移或缓慢运动的物体。光流法是在时间上连续的两幅图想中,用向量来表示移动前后的对应点,在适当平滑性约束的条件下,根据图像序列的时空梯度估计运动场,通过分析运动场的变化对运动目标和场景进行检测和分割。 上面的几种算法都是基于静态背景下的方法,下面主要介绍动态背景下运动目标的检测。 因为生活中我们在很多情况下背景图像都不是静态的,有时摄像机都是安装在一个运动

OpenCV 说明介绍

OpenCV3.0 Overview Gary Bradski Chief Scientist, Perception and AI at Magic Leap CEO, https://www.360docs.net/doc/829456151.html, Vadim Pisarevsky Principal Engineer, Itseez Grace Vesom Senior Engineer in 3D at Magic Leap Vincent Rabaud Perception Team Manager at Aldebaran Robotics

OpenCV at glance ?BSD license, 10M downloads, 500K+lines of code ?Huge community involvement, automated patch testing and integration process ?Runs everywhere Bindings: Python, Samples, Apps, SSE, NEON, IPP, OpenCL, CUDA, OpenCV4Tegra, … core, imgproc, objdetect … OpenCV HAL OpenCV face, text, rgbd, … OpenCV Contrib Java Solutions ?Find more at https://www.360docs.net/doc/829456151.html,(user) ?Or https://www.360docs.net/doc/829456151.html,(developer)

Recent Stats > 10M downloads NOTE: This is only for source forge. Many more downloads come from Git and many more come on Unix distros. ~200K downloads/month World wide Rated highly

基于opencv对图像的预处理

基于opencv 对图像的预处理 1.问题描述 本次设计是基于opencv 结合c++语言实现的对图像的预处理,opencv 是用于开发实时的图像处理、计算机视觉及模式识别程序;其中图像的预处理也就是利用opencv 对图像进行简单的编辑操作;例如对图像的对比度、亮度、饱和度进行调节,同时还可以对图像进行缩放和旋转,这些都是图像预处理简单的处理方法;首先通过opencv 加载一幅原型图像,显示出来;设置五个滑动控制按钮,当拖动按钮时,对比度、亮度、饱和度的大小也会随之改变,也可以通过同样的方式调节缩放的比例和旋转的角度,来控制图像,对图像进行处理,显示出符合调节要求的图像,进行对比观察他们的之间的变化。 2.模块划分 此次设计的模块分为五个模块,滑动控制模块、对比度和亮度调节模块、饱和度调节模块、缩放调节模块、旋转调节模块,他们之间的关系如下所示: 图一、各个模块关系图 调用 调用 调用 调用 滑动控制模块 对比度和亮度调节模块 饱和度调节模块 缩放调节模块 旋转调节模块

滑动控制模块处于主函数之中,是整个设计的核心部分,通过createTrackbar创建五个滑动控制按钮并且调用每个模块实现对图像相应的调节。 3.算法设计 (1)滑动控制: 滑动控制是整个设计的核心部分,通过创建滑动控制按钮调节大小来改变相应的数据,进行调用函数实现对图像的编辑,滑动控制是利用createTrackbar(),函数中包括了滑动控制的名称,滑动控制显示在什么窗口上,滑动变量的地址和它调节的最大围,以及每个控制按钮应该调用什么函数实现什么功能; (2)对比度和亮度的调节: 对比度和亮度的调节的原理是依照线性理论,它的公式如下所示:g(x)=a* f(x) +b,其中f(x)表示源图像的像素,g(x)表示输出图像的像素,参数a(需要满足a>0)被称为增益(gain),常常被用来控制图像的对比度,参数b通常被称为偏置(bias),常常被用来控制图像的亮度; (3)饱和度的调节: 饱和度调节利用cvCvtColor( src_image, dst_image, CV_BGR2HSV )将RGB 颜色空间转换为HSV颜色空间,其中“H=Hue”表示色调,“S=Saturation”表示饱和度,“V=Value ”表示纯度;所以饱和度的调节只需要调节S的大小,H 和V的值不需要做任何的改变; (4)旋转的调节: 旋转是以某参考点为圆心,将图像的个点(x,y)围绕圆心转动一个逆时针角度θ,变为新的坐标(x1,y1),x1=rcos(α+θ),y1=rsin(α+θ),其中r是图像的极径,α是图像与水平的坐标的角度的大小; (5)缩放的调节: 首先得到源图像的宽度x和高度y,变换后新的图像的宽度和高度分别为x1和y1,x1=x*f,y1=y*f,其中f是缩放因子; 4.函数功能描述 (1)主函数main()用来设置滑动控制按钮,当鼠标拖动按钮可以得到相应的数据大小,实现手动控制的功能,当鼠标拖动对比度和亮度调节是,主函数调用

VS2010+Opencv-2.4.3的配置 攻略2

VS2010+Opencv-2.4.3的配置攻略 Opencv2.4.3在VS2008和VS2010平台上安装配置图解 1、下载软件。Opencv2.4.3可从此处下载到:https://www.360docs.net/doc/829456151.html, 先安装VS2008或VS2010,接着把刚下载的Opencv2.4.3文件解压,建议把解压文件放在C盘,如C:\opencv,可以放在任意位置,但在下面的配置中相应把路径改下。2、设置用户变量。计算机>属性>高级系统设置>环境变量>新建,新建一个用 户变量,如变量名:Path,变量值:C:\opencv\build\x86\vc9\bin 变量值有如下选择: 32位VS2008:C:\opencv\build\x86\vc9\bin 64位VS2008:C:\opencv1\build\x64\vc9\bin 32位VS2010:C:\opencv\build\x86\vc10\bin 64位VS2010:C:\opencv\build\x64\vc10\bin

3、设置编译路径。 VS2008:工具>选项>VC++目录>平台,32位选Win32,64位则选x64,接着“在显示以下内容的目录”下拉框选择“包含文件”,点击“新行”图标,分别新建3条路径: C:\opencv\build\include C:\opencv\build\include\opencv C:\opencv\build\include\opencv2 然后选择“库文件”,新建1条路径: 32位:C:\opencv\build\x86\vc9\lib 64位:C:\opencv\build\x64\vc9\lib

opencv应用函数

目录 1 一、简介 1.1 1、OpenCV的特点 1.1.1 (1)总体描述 1.1.2 (2)功能 1.1.3 (3)OpenCV模块 1.2 2、有用的学习资源 1.2.1 (1)参考手册: 1.2.2 (2)网络资源: 1.2.3 (3)书籍: 1.2.4 (4)视频处理例程(在/samples/c/): 1.2.5 (5)图像处理例程(在/samples/c/): 1.3 3、OpenCV 命名规则 1.3.1 (1)函数名: 1.3.2 (2)矩阵数据类型: 1.3.3 (3)图像数据类型: 1.3.4 (4)头文件: 1.4 4、编译建议 1.4.1 (1)Linux: 1.4.2 (2)Windows: 1.5 5、C例程 2 二、GUI 指令 2.1 1、窗口管理 2.1.1 (1)创建和定位一个新窗口: 2.1.2 (2)载入图像: 2.1.3 (3)显示图像: 2.1.4 (4)关闭窗口: 2.1.5 (5)改变窗口大小: 2.2 2、输入处理 2.2.1 (1)处理鼠标事件: 2.2.2 (2)处理键盘事件: 2.2.3 (3)处理滑动条事件: 3 三、OpenCV的基本数据结构 3.1 1、图像数据结构 3.1.1 (1)IPL 图像: 3.2 2、矩阵与向量 3.2.1 (1)矩阵: 3.2.2 (2)一般矩阵: 3.2.3 (3)标量: 3.3 3、其它结构类型 3.3.1 (1)点:

3.3.2 (2)矩形框大小(以像素为精度): 3.3.3 (3)矩形框的偏置和大小: 4 四、图像处理 4.1 1、图像的内存分配与释放 4.1.1 (1)分配内存给一幅新图像: 4.1.2 (2)释放图像: 4.1.3 (3)复制图像: 4.1.4 (4)设置/获取感兴趣区域ROI: 4.1.5 (5)设置/获取感兴趣通道COI: 4.2 2、图像读写 4.2.1 (1)从文件中读入图像: 4.2.2 (2)保存图像: 4.3 3、访问图像像素 4.3.1 (1)假设你要访问第k通道、第i行、第j列的像素。 4.3.2 (2)间接访问: (通用,但效率低,可访问任意格式的图像) 4.3.3 (3)直接访问: (效率高,但容易出错) 4.3.4 (4)基于指针的直接访问: (简单高效) 4.3.5 (5)基于c++ wrapper 的直接访问: (更简单高效) 4.4 4、图像转换 4.4.1 (1)字节型图像的灰度-彩色转换: 4.4.2 (2)彩色图像->灰度图像: 4.4.3 (3)不同彩色空间之间的转换: 4.5 5、绘图指令 4.5.1 (1)绘制矩形: 4.5.2 (2)绘制圆形: 4.5.3 (3)绘制线段: 4.5.4 (4)绘制一组线段: 4.5.5 (5)绘制一组填充颜色的多边形: 4.5.6 (6)文本标注: 5 五、矩阵处理 5.1 1、矩阵的内存分配与释放 5.1.1 (1)总体上: 5.1.2 (2)为新矩阵分配内存: 5.1.3 (3)释放矩阵内存: 5.1.4 (4)复制矩阵: 5.1.5 (5)初始化矩阵: 5.1.6 (6)初始化矩阵为单位矩阵: 5.2 2、访问矩阵元素 5.2.1 (1)假设需要访问一个2D浮点型矩阵的第(i, j)个单元. 5.2.2 (2)间接访问: 5.2.3 (3)直接访问(假设矩阵数据按4字节行对齐): 5.2.4 (4)直接访问(当数据的行对齐可能存在间隙时possible alignment gaps):

基于opencv的手掌检测与移动的跟踪等源代码

1.#include 2. 3.#include 4.#include 5.#include 6. 7.#include 8.#include 9.#include 10.#include https://www.360docs.net/doc/829456151.html,ing namespace std; 12. 13.#pragma comment(lib,"cv210.lib") 14.#pragma comment(lib,"cxcore210.lib") 15.#pragma comment(lib,"highgui210.lib") 16. 17.void ErrorHandler(char* message) 18.{ 19. cout<

33. cout<<"failed to change work directory"<

Opencv的基本操作

实验六 OPENCV的基本操作 张慧彬 2013-8-24 机器人研究中心

目录 一.OPENCV的基本算法及一般应用 (2) 1.从磁盘加载并在屏幕上显示图象 (2) 2.播放AVI视频 (3) 3.视频播放控制 (4) 4.载入一幅图象并进行平滑处理 (6) 二.调试OPTICAL_FLOW_DEMO.CPP程序 (7) 三.OENCV的应用之CANNY边缘检测 (8) 1. C ANNY边缘检测基本原理 (8) 2.C ANNY边缘检测流程 (8) 四.试验总结及心得 (12)

一. Opencv的基本算法及一般应用 1.从磁盘加载并在屏幕上显示图象 #include”highgui.h” int main(int argc,char** argv); { IplImage *img=cvLoadImage(agrv[1]); //将图像文件加载至内存,cvLoadImage()函数是一个高层调用接口,它通过文件名确定被加载文件的格式,。IplImage结构体将是我们在使用OpenCV时会最常用到的数据结构 cvNamedWindow(”Example 1”,CV_WINDOW_AUTOSIZE); // cvNamedWindow()函数用于在屏幕上创建一个窗口,将被显示的图像包含于该窗口中。函数的第一个参数指定了该窗口的窗口标题,cvNamedWindow()函数的第二个参数定义了窗口的属性。该参数可被设置为0(默认值)或CV_WINDOW_AUTOSIZE,设置为0时,窗口的大小不会因图像的大小而改变,图像只能在窗口中根据窗口的大小进行拉伸或缩放;而设置为 CV_WINDOW_AUTOSIZE时,窗口则会根据图像的实际大小自动进行拉伸或缩放,以容纳图像 cvShowImage(”Example 1”,img);// 只要有一个与某个图像文件相对应的IplImage*类型的指针,我们就可以在一个已创建好的窗口(使用cvNamedWindow()函数创建)中使用cvShowImage()函数显示该图像。cvShowImage()函数通过设置其第一个参数确定在哪个已存在的窗口中显示图像。cvShowImage()函数被调用时,该窗口将被重新绘制,并且图像也会显示在窗口中。如果该窗口在创建时被指定CV_WINDOW_AUTOSIZE标志作为cvNamedWindow()函数的第二个参数,该窗口将根据图像的大小自动调整为与图像一致。 cvWaitKey(0);// 使程序暂停,等待用户触发一个按键操作。但如果将该函数参数设为一个正数,则程序将暂停一段时间,时间长为该整数值个毫秒单位,然后继续执行程序,即使用户没有按下任何键。当设置该函数参数为0或负数时,程序将一直等待用户触发按键操作。

OpenCV入门教程

OpenCV 入门教程 作者:于仕琪 shiqi.yu@https://www.360docs.net/doc/829456151.html, https://www.360docs.net/doc/829456151.html, 2012 年 8 月 版权所有?于仕琪 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

前言 OpenCV 是一个广受欢迎的开源计算机视觉库,它提供了很多函数,实现了很多计算机视觉算法,算法从最基本的滤波到高级的物体检测皆有涵盖。很多初学者希望快速掌握OpenCV 的使用方法,但往往会遇到各种各样的困难。其实仔细分析,造成这些困难的原因有两类:第一类是C/C++编程基础不过关;第二类是不了解算法原理。解决这些困难无非提升编程能力,以及提升理论基础知识。提升编程能力需要多练习编程,提升理论知识需要系统学习《数字图像处理》、《计算机视觉》和《模式识别》等课程,所有这些都不能一蹴而就,需要耐下心来认真修炼。 同时我们也需要认识到 OpenCV 只是一个算法库,能为我们搭建计算机视觉应用提供“砖头”。我们并不需要完全精通了算法原理之后才去使用 OpenCV,只要了解了“砖头”的功能,就可以动手了。在实践中学习才是最高效的学习方式。本小册子希望为初学者提供引导,使初学者快速了解 OpenCV 的基本数 据结构以及用法。 此外,如您发现有错误之处,欢迎来信指正。 于仕琪 深圳大学 插播广告:欢迎有能力、有激情以及对计算机视觉有兴趣的同学报考我的 研究生。欲了解详情可以访问深圳大学招生网https://www.360docs.net/doc/829456151.html,/或者给我发 email。

目录 第 1 章预备知识 (5) 1.1 编程的流程 (5) 1.2 什么叫编辑 (6) 1.3 什么叫编译 (6) 1.4 什么叫连接 (7) 1.5 什么叫运行 (7) 1.6 Visual C++是什么 (8) 1.7 头文件 (9) 1.8 库文件 (10) 1.9 OpenCV 是什么 (11) 1.10 什么是命令行参数 (12) 1.11 常见编译错误 (13) 1.11.1 找不到头文件 (13) 1.11.2 拼写错误 (14) 1.12 常见链接错误 (15) 1.13 运行时错误 (17) 第 2 章OpenCV 介绍 (19) 2.1 OpenCV 的来源 (19) 2.2 OpenCV 的协议 (19) 第 3 章图像的基本操作 (21) 3.1 图像的表示 (21) 3.2 Mat 类 (23) 3.3 创建 Mat 对象 (24) 3.3.1 构造函数方法 (24) 3.3.2 create()函数创建对象 (25) 3.3.3 Matlab 风格的创建对象方法 (26)

《基于 OpenCV的人脸识别系统》

西安电子科技大学 人工智能学院暑期夏令营科研实践《基于OpenCV的人脸识别系统》 实践报告 姓名:XXX 学校:XXXX 院系班级:XXXXXXXXX 联系方式:XXXX

目录 1 项目背景 (1) 2 项目目标 (1) 3 项目方案 (2) 3.1 人脸采集 (2) 3.2 人脸训练 (3) 3.3 人脸识别 (4) 4 项目调试 (6) 4.1 采集调试 (6) 4.2 训练调试 (6) 4.3 识别调试 (7) 5实践总结 (8)

如何创造一个安全的、数字现代化的、智能化的宿舍门禁系统有着十分重要的意义。然而,在日常管理中我们经常会碰到这样的问题:外来人员混入宿舍带来的安全隐患、夏天未带校园卡而在公寓楼前苦等、宿舍出入口必须有人盯守、晚归被困公寓楼外等等。 在当今计算机普及与急剧增长的状况下,应该实施一些高效率的系统,不仅省钱,省事,而且便捷,针对以上情况,十分有必要建立一个全面、高效、人性化、智能的高校宿舍出入管理系统。 因此,做一个人脸识别系统就非常地有必要! 2 项目目标 本项目拟完成人脸采集、人脸训练和人脸检测与识别的功能。 人脸采集程序主要完成以下功能: 1. 建立新的文件夹:用户根据提示输入自己姓名的简称,程序会在工程目录下建立该用户的文件夹,用以存放拍摄的照片; 2. 打开摄像头和写入图像:调用笔记本摄像头,当P键按下时,显示当前帧的图像,经处理后,保存图像;当q键按下时,立即退出采集程序 3. 人脸检测与裁剪:在当前帧识别出人脸后将其裁剪至ORL人脸数据 库大小即92x112。 人脸训练程序主要完成以下功能: 1. CSV文件读取:CSV文件对应的图像数据和对应的标签; 2. 样本训练:包括ORL人脸数据库的样本和自己的样本。 人脸训练样本取自ORL人脸数据库,共40个人,每人10张照片。照片在不同时间、不同表情(睁眼闭眼、笑或者不笑)、不同人脸细节(戴眼镜或者不戴眼镜)下采集,所有的图像都在一个黑暗均匀的背景下采集的,正面竖直人脸(有些有轻微旋转)。此外,增加自己的样本,并以相同尺寸拍摄20张左右图像。 人脸识别与检测程序主要完成以下功能: 1. 人脸检测:识别出当前帧是否有人脸; 2. 人脸预测:根据训练结果判断当前帧中人脸是否属于样本集; 3. 姓名显示:若属于样本集则显示姓名缩写,否则,显示“0”。

VS2010中应用OPENCV步骤

VS2010的MFC中应用opencv步骤 王良元2011.11.17 如下步骤前提是VC6和Opencv均已正确安装,默认opencv是装在C:\Program Files下,后面路径都是这个,如果安装到其他位置,只要改为你安装路径即可。 1、打开VS2010,新建MFC工程,命名,此处为VS2010_OPENCV,如图1 所示。 2、点击OK后,依次根据需要选择对应的形式,此处依次为基本对话框 (Dialog based)、去掉UNICODE字符集选项,默认的、静态编译(As a statically linked library),完成,则弹出基本应用程序界面,如图2所示。

3、删除文本框“TODO:在这里设置对话框”,并添加一个图片控件,选中控件,右键-》属性,将“Type”选择为框架(rectangle),将ID改为IDC_ShowImg,适当调整控件大小,添加两个按钮,一个将caption改为ReadImg,实现读入图片功能,另一个将aption改为EdgeDetect,实现边缘检测功能,如图3所示。 4、在MFC工程中添加opencv的库和头文件,在VS2010中新建工程后,在工程名上右键-》

属性-》配置属性-》VC++目录的右边分别添加包含目录和库目录,如下图所示 具体添加内容为: 头文件路径: C:\Program Files\OpenCV\cxcore\include C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\otherlibs\highgui C:\Program Files\OpenCV\otherlibs\cvcam\include 库文件路径: C:\Program Files\OpenCV\lib 5、在“解决方案管理器”面板点击头文件,在VS2010_OPENCVDlg.h 下加入如下代码: #include"cv.h" #include"highgui.h"

MFC中应用OpenCV教程

在MFC框架快速应用OpenCV 版本1,作者:ollydg23日期:11/29/08 Contents 1创建SDI工程1 2加入OpenCV库支持2 3在Doc类中添加变量3 4添加虚函数3 5View类中添加显示图片代码4 6感谢和后记5 1创建SDI工程 我使用的是Visual C++ 6.0,因此,本教程描述的是在VC6上面演示操作,如果您使用别的版本的VC,我想应该也差不多。 首先,按照VC的向导,产生一个默认的MFC的工程,注意,选择SDI单文档支持的,同时最好选择“use MFC As a static library”1。 1以避免一些MFC中的memory leak的问题 1

Figure1:VC向导,选择MFC APPWizard Figure2:VC向导,选择single document 就这样子一路下去之后,基本的MFC框架就创建完成了。 2加入OpenCV库支持 现在加入openCV必须的头文件和库文件。如下图所示,我们添加库文件:cxcore.lib cv.lib highgui.lib 2

Figure3:添加lib文件 3在Doc类中添加变量 Figure4:加入变量m image 并且在开头加上HighGui.h的头文件包含,同时添加一个变量“CImage m image;”。 4添加虚函数 添加两个函数,分别用来打开图片文件和保存图片文件,添加过程见下图的右键菜单。 3

Figure5:右键添加虚函数 如上图所示,添加虚函数,分别添加: Algorithm1打开文件 BOOL CSDI OpenCVDoc::OnOpenDocument(LPCTSTR lpszPathName){ if(!CDocument::OnOpenDocument(lpszPathName))return FALSE; //TODO:Add your specialized creation code here m image.Load(lpszPathName); return TRUE; } Algorithm2保存文件 BOOL CSDI OpenCVDoc::OnSaveDocument(LPCTSTR lpszPathName){ //TODO:Add your specialized code here and/or call the base class m image.Save(lpszPathName); return CDocument::OnSaveDocument(lpszPathName); } 5View类中添加显示图片代码 在View类中间添加必要的图片显示代码,主要是在Ondraw里面。 4

OpenCV入门教程

OpenCV入门教程 作者:于仕琪 shiqi.yu@https://www.360docs.net/doc/829456151.html, https://www.360docs.net/doc/829456151.html, 2012年8月 版权所有?于仕琪 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

前言 OpenCV是一个广受欢迎的开源计算机视觉库,它提供了很多函数,实现了很多计算机视觉算法,算法从最基本的滤波到高级的物体检测皆有涵盖。很多初学者希望快速掌握OpenCV的使用方法,但往往会遇到各种各样的困难。其实仔细分析,造成这些困难的原因有两类:第一类是C/C++编程基础不过关;第二类是不了解算法原理。解决这些困难无非提升编程能力,以及提升理论基础知识。提升编程能力需要多练习编程,提升理论知识需要系统学习《数字图像处理》、《计算机视觉》和《模式识别》等课程,所有这些都不能一蹴而就,需要耐下心来认真修炼。 同时我们也需要认识到OpenCV只是一个算法库,能为我们搭建计算机视觉应用提供“砖头”。我们并不需要完全精通了算法原理之后才去使用OpenCV,只要了解了“砖头”的功能,就可以动手了。在实践中学习才是最高效的学习方式。本小册子希望为初学者提供引导,使初学者快速了解OpenCV的基本数据结构以及用法。 此外,如您发现有错误之处,欢迎来信指正。 于仕琪 深圳大学 插播广告:欢迎有能力、有激情以及对计算机视觉有兴趣的同学报考我的研究生。欲了解详情可以访问深圳大学招生网https://www.360docs.net/doc/829456151.html,/或者给我发email。

目录 第1章预备知识 (5) 1.1编程的流程 (5) 1.2什么叫编辑 (6) 1.3什么叫编译 (6) 1.4什么叫连接 (7) 1.5什么叫运行 (7) 1.6Visual C++是什么 (8) 1.7头文件 (9) 1.8库文件 (10) 1.9OpenCV是什么 (11) 1.10什么是命令行参数 (12) 1.11常见编译错误 (13) 1.11.1找不到头文件 (13) 1.11.2拼写错误 (14) 1.12常见链接错误 (15) 1.13运行时错误 (17) 第2章OpenCV介绍 (19) 2.1OpenCV的来源 (19) 2.2OpenCV的协议 (19) 第3章图像的基本操作 (21) 3.1图像的表示 (21) 3.2Mat类 (23) 3.3创建Mat对象 (24) 3.3.1构造函数方法 (24) 3.3.2create()函数创建对象 (25) 3.3.3Matlab风格的创建对象方法 (26)

相关主题
相关文档
最新文档