全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 用来检测图像中的人脸区域 CVAPI(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 为用来存储检测到 的一序列候选目标矩形框的内存区域,scale_factor 在前后两次相继的扫描中, 搜索窗口的比例系数,例如1.1指将搜索窗口依次扩大10%,min_neighbors 为 构成检测目标的相邻矩形的最小个数(缺省1),flags 为操作方式,min_size 为检测窗口的最小尺寸。缺省的情况下被设为分类器训练时采用的样本尺寸(人 脸检测中缺省大小是2020)。 6)cvRectangle 绘制矩形 CVAPI(void) cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness CV_DEFAULT(1), int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0); 绘制出检测到人脸区域并显示,便于使用者观看是否检测出人脸, 。其中 img 为图像,pt1 - 矩形的一个顶点,pt2 - 矩形对角线上的另一个顶点, color - 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image) , thickness - 组成矩形的线条的粗细程度,取负值时(如 CV_FILLED)函数绘 制填充了色彩的矩形,line_type - 线条的类型。见 cvLine 的描述,shift - - 坐标点的小数点位数。 7)cvResize 重置图像大小 CVAPI(void) cvResize( const CvArr* src, CvArr* dst, int interpolation CV_DEFAULT( CV_INTER_LINEAR ); 重置图像大小,使图像归一到同样大小。interpolation 插值方式:选择用线 性插值(CV_INTER_LINEAR)和区域插值(CV_INTER_AREA) 。 8)cvOpenFileStorage 打开存在或创建新的文件 CVAPI(CvFileStorage*) cvOpenFileStorage( const char* filename, CvMemStorage* memstorage, int flags, const char* encoding CV_DEFAULT(NULL) ); 把训练数据保存至 xml 文件,通过此函数打开文件便于进行读写。flag 有 10 种,这里用到其中读和写二种:CV_STORAGE_READ (打开文件读数据)和 CV_STORAGE_WRITE(打开文件写数据) 。文件打开后 有写操作和读操作函数: cvWrite();cvWriteInt();cvReadByName();cvReadIntByName()。 9)cvCalcEigenObjects 计算引入矩阵的 eigen vector(特征向量) 、 eigen value(特征根) 、 image average(影像平均值 ) 。 CVAPI(void) cvCalcEigenObjects( int nObjects, void* input, void* output,int ioFlags, int ioBufSize, void* userData, CvTermCriteria* calcLimit, IplImage* avg,float* eigVals ); OpenCV 已经实现 PCA 关键算法之一,计算出传入图像阵列的特征值、特征向量 和平均值。其中 nObjects 为样本个数,input 为输入的影响矩阵,output 为 特征矩阵,calcLimit 为回调结束条件,avg 为平均值,eigVals 特征根。 10)cvEigenDecomposite 透 过 eigen vector和 原 始 影 像 集 来 解 析 每 张 图 片 降 维 后 对 应 的 系 数 coefficients。 CVAPI(void) cvEigenDecomposite( IplImage* obj, int nEigObjs, void* eigInput, int ioFlags, void* userData, IplImage* avg, float* coeffs ); OpenCV 已经实现 PCA 关键算法之一,对输入图像投影到子空间,计算投影 各维度系数,以此表示图像。其中 obj 为输入目标图像,nEigObjs 为选取的特 征维数,eigInput 为向量组成的变换矩阵,数据结构属于 IplImage 队列,或 者根据 ioFlag 参数值变化的回调函数,avg 为平均值,coeffs 为输入图像对 应的投影。 11)cvConvertScale 使用线性变换转换数组,得到可以保存显示的图像 CVAPI(void) cvConvertScale( const CvArr* src,CvArr* dst, double scale CV_DEFAULT(1), double shift CV_DEFAULT(0) ); OpenCV 要保存显示图像,图像数据必须是 uchar 格式,因此对于非 uchar 数据需要转换。其中 src 为输入数组,dst 为输出数组 ,scale 为比例因子, shift 为该加数被加到输入数组元素按比例缩放后得到的元素上,采用公式 dst(I)=src(I)*scale + (shift,shift,.) 进行转换。 4.2 关键功能部分函数设计实现 4.2.1 摄像头操作: 要实现系统功能,首要先从摄像头中读取数据,为此,需要保证摄像头开 启,为保证获取画面统一便于管理,通过 cvSetCaptureProperty()函数设置 摄像头分辨率为常用值(320*240) ,读取摄像头数据,返回 IplImage 图像数 据,该部分需要实现的是打开摄像头、设置摄像头分辨率属性、读取摄像头图 像,还有使用完后释放摄像头资源操作。 软件启动后若选择不从文件中读取信息,自动启动摄像头获取图片。 按“ESC”键退出系统时自动回收资源,关闭摄像头,释放摄像头资源。 4.1.2 人脸检测功能: 要实现人脸识别,首要先检测出人脸。实现该功能,接收摄像头中获取的图 像数据,进行灰度化等操作,利用 Haar 特征,使用强级联分类器,搜索检测人 脸区域,提取出可能的最大脸,为防止误检,进一步在提取出的区域再次对人 眼进行检测,过滤掉检测不到人眼的区域,从而有效地降低了人脸区域误检率, 获取真正需要的人脸区域。人脸区域获取后,进一步提取出人脸图像,为了训 练需要,还须对提取的图像进行大小归一化,使得得到的图像大小统一,为了 进一步提高后续识别效率,对图像进行直方图均衡化,最后得到所需图像用于 训练和识别。 4.1.3 图像特征训练提取: 利用主成分分析法(PCA)算法对收集到的用户图像进行降维训练,提取人 脸特征值。主成分分析法实现主要分为几步完成: 1、去均值 2、计算协方差 矩阵及其特征值和特征向量 3、计算协方差矩阵的特征值大于阈值的个数 4、 降序排列特征值 5、去掉较小的特征值 6、去掉较大的特征值(可有可无) 7、 合并选择的特征值 8、选择相应的特征值和特征向量 9、计算白化矩阵 10、提 取主分量。读取人脸训练集,利用 PCA 算法得到特征人脸和平均人脸,在此基 础上把每张训练人脸投影到特征脸空间中得到投影数据作为每幅人脸的特征脸。 满足系统要求,可能需要能够识别多人身份,因此需要能够添加用户。 系统启动后,识别过程中,设置按下n键,进入添加用户模式,输入用 户名开始自动采集用户脸部图像,开始训练提取特征数据。 4.1.4 训练图像保存: PCA 算法过程中会计算出人脸的平均脸信息,和特征脸信息,但得到的这 些信息是无法直接显示到屏幕上的,想要看到这些图像,就需要把其加以转换, 得到可以直接显示的格式。在这一阶段,计算出其最大值和最小值,对于超出 数值范围和非数值的值进行过滤修改,然后利用 cvConvertScale 函数将 float 类型的值转化为需要的 uchar 类型,然后调用 cvshowImage 进行保存。 训练数据保存与加载: 对于利用 PCA 得到的训练数据要在识别时使用,所以首先需要保存起来, 在识别时读取并当前数据匹配。这个阶段主要涉及到文件的操作,包括文件的 打开、关闭,写数据和读数据。 4.1.5 身份识别验证功能: 整个系统中最关键重要的就
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五年级数学(小数除法)计算题专项练习及答案
- 电冰箱、空调器安装与维护电子教案 4.3 运行并调试
- 湘教版九年级美术上册说课稿
- 江西省上饶市广丰中学2024-2025学年高三上学期11月化学测试卷(含答案)
- 福建省龙岩市一级校联盟2024-2025学年高三上学期11月期中考试 英语(含答案无听力音频有听力原文)
- 头发造型用发胶产业规划专项研究报告
- 医用人体成分分析仪产业规划专项研究报告
- 挖泥机市场发展预测和趋势分析
- 医用消毒器市场需求与消费特点分析
- 湖北省荆州市监利市多校2024-2025学年二年级上学期期中数学试题
- 单词默写表(素材)-2023-2024学年人教PEP版英语五年级上册
- 发票勾选认证培训课件
- 2024年高考数学复习备考策略讲座
- 2022版义务教育(生物学)课程标准(附课标解读)
- 麻醉恢复室护理课件
- 肌张力障碍性震颤的护理查房
- 湖北省武汉市江夏区2023-2024学年七年级上学期期中数学试题
- 五育融合下的新劳动教育课题
- 数字化转型对中学教育的影响
- tpm培训学习心得体会
- 新型电力系统简介演示
评论
0/150
提交评论