首页 OpenCV与智能手机

OpenCV与智能手机

举报
开通vip

OpenCV与智能手机 计算机工程与设计 ComputerEngineering andDesign 2011 , Vo1.32,No.8 2901 基于 OpenCV的机器视觉在智能手机中的应用 何 鹏 , 王连鹏 , 楚艳红 (齐齐哈 尔大学 通信 与电子工程学院,黑龙江 齐齐哈 尔 161006) 摘 要 :针对智能手机市场竞争 中主要力拼软件的特点,将机器视觉技术引入以Linux为操作系统的智能手机 中,基于Open. CV研究并实现了手势识别控制应用程序 。系统决策实现的部分是以手势来启动音 乐播放程序进行讨论...

OpenCV与智能手机
计算机 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 与设计 ComputerEngineering andDesign 2011 , Vo1.32,No.8 2901 基于 OpenCV的机器视觉在智能手机中的应用 何 鹏 , 王连鹏 , 楚艳红 (齐齐哈 尔大学 通信 与电子工程学院,黑龙江 齐齐哈 尔 161006) 摘 要 :针对智能手机市场竞争 中主要力拼软件的特点,将机器视觉技术引入以Linux为操作系统的智能手机 中,基于Open. CV研究并实现了手势识别控制应用程序 。系统决策实现的部分是以手势来启动音 乐播放程序进行讨论,而且程序 留有扩展 接口可以实现更多不同的手势来控制不同的操作。实验结果表明,该系统满足实时处理需求 ,运行稳定。这种非接触式控制 智能手机操作的功能既实用又前卫,使 Linux操作系统的智能手机更具吸引力,发展前景更广阔。 关键词:机器视觉;智能手机;计算机视觉库;嵌入式 Linux;先进 RISC微处理器 中图法分类号:TP317 文献标识码:A 文章编号:1000.7024(2011)08.2901—04 Application of machine vision in smartphone based on OpenCV HE Peng, WANG Lian-peng, CHU Yan—hong (College of Communication and Electronic Engineering,Qiqihar University,Qiqihaer 1 6 1 006,China) Abstract:For the features of competing mainly in software in the smart phone market,the machine vision technology is introduced to the smart phone based on embedded Linux. The hand signal recognition control application procedure based on OpenCV is studied and realized.Part ofthe decision started music player with the hand signal to regularly to carry on the discussion,and the program expansion interfaces can implement more different gestures to control the different actions.The experiment indicated that this system meets the rea1. time processing need, and the movement is stable.This feature ofcontactless controlling smart phone are both practical an d avant-garde, and it makes the smart phones based on Linux more attractive, more broad prospects for development. Key words:machine vision; smartphone; OpenCV; embedded Linux;ARM 0 引 言 作为移动通信终端产品的智能手机是实现三网融合业务 的重要载体 ,在激 烈的手机市场竞 争中,融合 了计算机视 觉技 术的智能手机是提升竞争力的主要途径之~Ⅲ。本文在基于 Linux操作系统的智能手机上 】,以Intel公司的开源计算机视 觉库(open sourcecomputervision,OpenCV)为基础 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 库,开发 了智能手机手势识别控制应用系统。对于决策部分的实现, 本文以手机中音乐播放应用程序为例,实现了通过手势开启 音乐播放软件的功能。本系统的基础上还可 以扩展很多功 能,如 自拍功能,即通过手势开启手机的自拍功能,使用户摆 脱了限于规定时间启动拍摄的束缚等。本系统丰富智能手机 的实用功能,将大大提高了在智能手机产品中的竞争力。 1 机器视 觉及 OpenCV开发环境 1.1 机器视觉 随着信号处理和计算机技术的发展,利用摄像机获取数 字图像,再用计算机实现对视觉信息处理的过程就是计算机 视觉0·。机器视觉则是建立在计算机视觉的基础之上,偏重于 计算机视觉技术的工程化,重点在于感知环境中物体的形状、 位置、姿态和运动等几何信息。一个机器视觉系统应该能够 自动获得数字图像,对图像中的特征量进行处理、 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 和测 量,从而得到对 目标物体的某种认识并做出相应的决策 。 1.2 OpenCV简介 OpenCV,即开放源代码计算机视觉库,是英特尔公司资 助的两大图像处理利器之一,它内嵌图像处理、模式识别、三 维重建、物体跟踪、机器学习和线性代数,提供了各种各样的 算法。OpenCV采用 C/C++语言编写,可以运行在 Linux/Win. dows/Mac等操作系统上,OpenCV还提供了 Python、Ruby、 MATLAB以及其他语言的接 口。OpenCV的一个 目标是构建 ~ 个简单易用的计算机视觉框架,以帮助开发人员更便捷地 设计更复杂的计算机视觉相关应用程序。基本结构主要 由 CXCore模块、CV模块、HighGUI模块和ML模块构成 。 由于 OpenCV采用 C/C++语言编写而 且都是经过优 化的 , 收稿日期:2010-09—06;修订日期:2010—1 1-06。 作者简介:何鹏 (197O一),男 (蒙古族),黑龙江肇源人,博士,教授,硕士生导师,研究方向为图像处理、生物信息 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 等; 王连鹏 (1981一), 男,吉林辽源人,硕士研究生,研究方向为图像处理: 楚艳红 (1987一),女,黑龙江讷河人,硕士研究生,研究方向为图像处理。 E—mail:paper507@163.com 2902 201 1,Vo1.32,No.8 计算机工程与设计 Computer Engineering and Design 所 以基 于 OpenCV开发的程序有很 高的运行效率 ,将 它应用 于机器视觉系统的开发会大幅提高系统的性能,非常适合智 能手机这类嵌入式设备的性能需求 。 1.3 OpenCV开发环境的搭建 为了宿主机编译出的程序能够在目标平台ARM(advanced RISCmachines)上运 行,这里 需要 使用 ARM 的交叉编译器 arlTl— linux-gcc重新编译OpenCV源码 。本系统宿主机使用的Linux 版本是 Ubuntu 9.10,交叉编译器版本为aim.1inux—gcc 2.95_3。 (1)首先需要在 Ubuntu系统中安装所需的依赖库 所需的依赖库有 manpages—dev、pkg—config和 zliblg—dev。 另外,还需要到 http://downloads.sourceforge.net分别下载 libpng、1ibjpeg和libz源码包进行编译安装。 (2)配置 OpenCV安装 信息 在终端窗口进入解压后的OpenCV目录下,运行如下配 置命令: sudo./configure--host=arm—linux一一without—gtk一一without—Gar- bon??----without-quicktime·-·-without-·13941ibs·-·-without--ffmpeg·-·- without-python-without-swig....enable..static....disable..shared....disa.. ble-apps CXX=arm-·linux-g++CPPFLAGS=·-I/usr/include----prefix= /usr/locaYarm·opencv 这里使用参数一enable.static—disable.shared来生成静态库。 O)编译、安装 sud0make , sudomakeinstall 2 系统结构 本系统开发测试使用 ARM 9开发板,它采用 Samstmg公 司的 $3C2410微处理器 ,SDRAM 64MB,NAND Flash 64MB, NORFlash 2MB,lo/1o0M 以太网口,USB接口等,系统相关的 主要外设为TFT液晶屏和基于OV511芯片的USB摄像头。系 统软件部分,系统引导程序Bootloader使用采用由德国DENX 小组开发的U—Boot 1.1.4,Linux内核版本为2.4.18,对于液晶 屏和 USB摄像头的驱动以动态模块方式加载。 系统上电后直接从0x00000000处开始执行,此处是Nor Flash的起始地址,装有 Boofloader系统引导程序,由于Nor Flash具有芯片内执行(execute inplace)的特点,所以U—Boot的 第一阶段代码直接在NorFlasb中执行,首先对 SDRAM、Flash 大小自动检测,SDRAM 的故障检测,CPU型号检测等。然后 引导它的第二阶段代码到SDRAM执行,它把Linux内核引导 到SDRAM执行,Linux内核程序完成自解压与重定位,最后挂 载根文件系统,执行手机服务程序。系统架构图如图1所示 。 3 手势识别控制应用程序的设计与实现 3.1 训练哈尔 (Haar)特征的分类器 利用 OpenCV来 训练一个 Haar特 征 的分类器 ,它是一 个级联的boosted分类器“ ” 。每一级的子分类器则由积分图 像计算得到许多Haar特征构成,并且每个特征带一个阈值和 两个分支值,每级子分类器带一个总的闽值。训练一个 Haar 分类器分为准备正负样本、创建正样本集和训练分类器得到 训练模型。 l手势识别控制程序lI其它应用程序 I API 摄 — } 嵌入式Linux操作系统 液 像 晶 头 显 输 l 驱动程序 l 示 入 屏 I 系统引导程序u.B。。t _ f ARM处理芯片及外设接口 图 1 系统架构 3.1.1 样本准备 首先要建立所需的工作目录,即在home/wlp/opencv/下建立 hand-defect — control目录,进入此目录,再建立img和jmg目录。 (1)正样本图片及其描述文件的建立 本次实验使用了 100张不同人物的同一种手势的图片, 将其用图像编辑软件剪裁成长宽各 20个像素大小的图片,格 式为 JPEG,文件名分别为 img1.jpg、img2.jpg、⋯imgl00.jpg。将 它们存于 hand—defect control/img目录里。 在 hand—defect _ control目录下建立文本格式的描述文件, 命名为 info.txt,并将 100张样本图片的描述信息写入此文件。 其中每一个文本行对应一个样本图片的信息,每行的第一个 元素是图片文件名(带路径信息),第二个元素是对象实体的个 数。后面紧跟着的是与之匹配的矩形框(x,y’宽度,高度)。例 如 img/img1.jpg 1 0 0 20 2O。 (2)负样本图片及其描述文件的建立 这里使用了200张不含手势特征的风景照片,处理为长 宽各400像素大小图片,负样本图片的尺寸大小只要大于等 于正样本图片尺寸即可。格式为JPEG,文件名分别为bg1.jpg、 bg2.jpg、⋯ bgl00.jpg。将它们存于hand-defect _ controF _ _ img目 录里。负样本描述文件的创建方法同正样本描述文件,在hand- defect — control目录下建立名为 bg.txt文件,将 200张负样本图 片的描述信息写入此文件,这里仅描述文件名即可。如 )me,/ bg1.jpg。 3.】.2 正样本创建 正样本由opencv-createsampMs程序来创建。它是OpenCV 自带的可执行文件,编译安装完 OpenCV后可在安装路径下 bin目录下找到它。在终端窗口进入 hand-defect control目录 键 入如下命令 : opencv createsamples-vec hand.vec-info inf0.txt·bg bg.txt· nurll 8..W 20..h20 在当前 目录下便生成正样本文件hand.vec,这是HaarTrai. ning训练 时所 需输入 的vec文件 。 3.1_3 训练分类器 样本创建之后,接下来要训练分类器,这是由opencv-h~- rtraining程序来创建,该程序同 opencv—createsamples程序一样 也是由OpenCV给出,并且在相同的路径下可以找到。终端 命令行进入 hand—defect control目录键入如下命令: 何鹏,王连鹏,楚艳红:基于 OpenCV的机器视觉在智能手机 中的应用 2011,Vo1.32,No.8 2903 opencv—haartraining—data/home/wlp/opencv—workshop/hand· defect — control/data —vec hand.vec—bg bg.txt—npos 8一nneg 10 一W 20一h 20 执行完后分类器信息将保存到xml文件中,就是当前 目 录 下生成 的 data.xml文件 。下面 的应用程序 中将调用 这个分 类器对输入的图像信息进行识别。 3.2 手势识别控制算法分析 当用 户开启 本手势识 别控制应 用程序 后 ,此应用 程序使 用函数 cvLoad载入上节训练 的分类器文件 data.xml,再用 cvCaptureFromCAM 函数 获取摄像 头来采集 视频 图像,cvGrab— Frame函数可以从输入的视频流中抓取一帧图像,由于 Haar 特征 是基于灰 度的 ,所 以 cvCvtColor函数将 这帧 图像 转换为 灰度 图像 ,这 时调用 cvHaarDetectObjects函数 来检测 目标 图 像,此函数首先采用与训练时同样大小的搜索窗口去遍历整 幅待检测图像,窗口每移动到一个位置处,便调用一次cvRun— HaarClassifierCascade函数进行检测,计算窗口内的Haar特征, 加权后与分类器中的Haar特征的阀值进行比较,由比较结果 来确定是左还是右分支值 ,再将得到的所有分支值累加后与 当前级的阀值相比较,当大于该阀值时才可以进入下一级的 筛选 ,当通过 所有级 的时候 即可认为此 目标手势 以大概 率情 形被命中。然后,为了搜索待检测图像中不同大小的 目标手 势,还要按一定的比例扩大搜索窗口(如本例采用比例系数为 1.1,每次将搜 索窗 口扩大 1O%)再对待检测 图像进行遍历检测 。 最后,当检测到目标手势时分类器输出为 1,启动音乐播放应 用程序或其它操作,否则进行下一帧的图像检测。程序流程 图如 图 2所示 。 开始 载入分类器 启动摄像头 抓取一帧图像 转换为灰度 图像 计算积分图像 设搜索窗口 win— size初值 为长宽各 20像素 缩放比例系数 factor初值为 1 N 计算窗口内的Haar特征 用分类器进行检测 < > Y+ 启动音if,播放应用程序或其它 所有 兰 —:> —\ ——一 Y 。 待竺粤 >N 搜索窗口<待检图像 二)~ — \ — / Y± — 移动搜索窗 口于 下一个感 趣区域 置搜索窗口于待检 图像的 感兴趣区域 图 2 程序 流程 结束 3-3 编译与移植 在 shell下,用 cd命令进入手势识别控制程序的源代码 hand—defect — contro1.C所在 的 目录 ,键 入如下 交叉编译 的命令 : arm—linux—gcc hand—defect — contro1.C —static —L/usr/local/arm— opencv/lib—I/usr/local/arm—opencv/include—O hand.defect control 在 当前 目录下便 生成 了 hand—defect contro1.out可 执行文 件 。由于本系统 的运行环 境是在嵌 入式设备 上 ,所 以这里要 加参数一static,用静态库链接的方式是在程序编译时就将所需 的库一 同编译 到 目标代码 中 ,这 种方式在嵌 入式设备 上具有 很多优点,如运行速度比动态加载要快,减少对环境的依赖, 使用简单等。将hand—defect contro1.out加入根文件系统中,再 将根文件 系统 下载 到开发 板中就可 以运行 了“ 。 3.4 运行结果分析 本程序运行后抓取帧数据进行识别,以当前帧的灰度图 像为例,如图 3所示。图3中人物的手势即为训练 Haar特征 的分类器 所能识别 的 目标 ,所 以此帧 图像应 该被本程序 正确 识别并执行相应的决策动作。图4中的 Debug Message提示 的内容是为方便结果分析而在源程序中加入的若干调试信息, 对这 帧图像处理后便在命令提示 符下输出如图 4所示的信息 , 可见 已经成功识别并启动了音乐播放程序Madplay,调试的语 句使用了getpid函数获取了hand defect_control进程及其启动 的Madplay进程的进程号,分别为 1752和 1753。 图 3 抓取帧灰度 图像 detection time=51.2433ms Debug Message:total=4 Debug Message:The hand defeCt control pid iS l 752 Debug Message:⋯ It is defected.⋯ Debug M essage:Now starting M adplay! Debug M essage:The M adplay pid is l 753 图4 调试信 息输 出 Linux中的系统管理命令ps可以显示当前系统中的进程 列表,在列表中可以找到hand _ defect control和 Madplay进程 的详细信息如图5所示,图中第二列既为进程的进程号,可知 这两个进程号分别为 1752和 1753,这也正是调试信息所显示 的进程号。从而说明手势识别控制程序成功检测并执行了相 应 的决策 。 4 技术难点 4.1 Linux对摄像头的支持 在 Linux系统 中能使用摄 像头,仅加载此外设 的驱动程序 是不够 的,还需要 V4L(video41inux)的支持 ,它是 Linux内核里支 持影像设备的一组 APIs,配合视频采集设备的驱动程序,实现 影像采集、AM/FM无线广播、影像 CODEC、频道切换等功能。 而本系统所用 OpenCV 的 cvCaptureFromCAM 函数正是把 V4L 作为接 口,从摄像头读取视频流分配和初始化 CvCapture结构 。 2904 2011,Vo1.32,No.8 计算机工程与设计 Computer Engineering and Design wlp 1752 1693 1 12:15pts/O 00:00:00 /hartd _ defect _ control wIp 1753 1752 0 12:15 pts/0 00:00:00 M adplay wlp 1760 1691 3 12:15 pts/l 00:00:O0bash wtp 1.796 1760 0 12:15 ptsH 00:00:00 ps-ef 图5 系统进程列表输出 V4L和0V5l1芯片的USB摄像头驱动都可以在进入Linux 源码目录进行配置、编译得到。从 Linux2.4版本开始 OV511 驱动程序就 已经是内核代码的一部分 了。首先在终端运行 makemenuconfig命令打开MainMenu窗口,并进入“Multimedia devices”菜单选项,将Video For Linux配置为模块;返回Main Menu 窗 口,再 进 入 “USB suppog”菜 单 选 项,将 USB OV511Camera suppo~设置为模块;保存退出后用使用 make modules命令编译链接模块。这样就可以分别在Linux内核源 码 目 录/KemelCode/2410/drivers/media/video 和/KemelCode/ 2410/drivers/usb/文件夹中生成videodev.o模块和ov511.o5块。 可以用如下命令语句进行动态加载这两个模块: insmod videodev.o insmod or51I.O 这样程序中调用cvCaptureFromCAM函数便可以获取摄像 头采集图像,其中OpenCV程序中默认设备为/dev/video0 。 4.2 进程控制 一 般是将程序的一次执行过程称为进程。通过处于运行 态的手势识别控制进程来启动一个静态的音乐播放程序使其 变为进程将涉及进程控制技术。在Linux中有 6个以exec开 头的函数提供了在一个进程中启动另一个进程的方法,它搜 索文件系统中指定路径的文件,并用它来取代原调用进程的 数据段、代码段和堆栈段,这意味着原进程 已经消亡了。但本 系统的手势识别控制程序在成功启动音乐播放程序后,需要 返回并等待执行其它扩展功能的命令,所以它不能消亡,可以 把exec函数与创建进程的f-0rk函数相结合来解决这个问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。 关键代码如下: if(fork()一 0){ if(execvp(”Madplay”,NuLL)<0) printf(”failto exec\n”): exit(0); } 由于f0rk函数得到的子进程是父进程hand defect control 的一个复制,它复制了父进程中的代码段、数据段和堆栈段里 的大部分内容,对它的消亡不会影响到父进程,所以在这个新 创建的子进程 中使用 exevp函数调用 Madplay.out音乐播放 程 序取代这个子进程,就不会破坏原手势识别控制进程的继续 执 行了[t7l~ 5 结束语 本文介绍了机器视觉技术在智能手机中应用的方法并实 现了手势识别控制功能模块。从性能角度来看,此模块是基 于OpenCV开发的,具有运行效率高、算法成熟稳定等优点: 从功能角度来看,此模块使用手势来控制手机,而且留有功能 扩展接 口,满足了用户对手机多功能的需求。在激烈的智能 手机市场竞争中,这种既华丽又实用的非接触式控制使用手 机的方式使嵌入式 Linux操作系统的智能手机大大提高了市 场竞争力,具有广阔的发展前景。 参考文献: 【1】 徐连霞.浅谈智能手机(Smart Phone)的应用与开发[J].电脑知 识与技术,2009,18(33):9304.9306. [2】 吴岳.Linux C程序设计大全[M】.北京:清华大学出版社,2Oo9: 7—8. 【3】 张梅,文静华.浅谈计算机视觉与数字摄影测量【J].地理空间信 息,2010,8(2):15-l7. 【4】 张广军.机器视觉[M].北京:科学出版社,2005:1.3. 【5] 刘瑞祯,于仕琪.OpenCV教程.基础篇【M】.北京:北京航空航天 大学出版社,2007. [6]6 谭学科.基于ARM和OpenCV的增强现实平台研究【D】.大连: 大连理工大学,2009:46—60. [7] 邱毅凌.现代嵌入式系统开发专案实务【M】.北京:电子工业出 版社,2009:93.105. 【8] Andrzej Kasinski,Adam Schmidt.The architecture and performa- nce ofthe face and eyes detection system based on the Haar CaS— cade classifiers[J].Paaem Analysis&Applications,2010,l3(2): 197.211. f9】 Seemann E,Nickel K,gtiefelhagen R.Head pose estimation using stereo vision for human-robot interaction[C].Proc oflEEE Inter- national Conference on Automatic Face and Gesture Recogni- tion,2004:626-63 1. 【lO】Adam Schmidt,Andrzej Kasifiski.The performance of the Haar cascade classifiers applied to the face and eyes detection【J】. Computer Recognition Systems 2,2007,45:816-823. 【11]李厚君,李玉镒.基于AdaBoost的眉毛检测与定位【J].计算机 与数字工程,2010,38(8):175.177. [12】郭磊,王秋光.Adaboost人脸检测算法研究及OpenCV实现【J]. 哈尔滨理工大学学报,2009,14(5):123.126. 【13]Milos Stojmenovic.Real time machine learning based car detec- tion in images with fast training[J].Machine Vision and Appliea- tions,2006,17(3):163-172. 【l4]曹志剐.基于 L1NUX+ARM 的视频系统的应用和开发【D】.北 京:北方工业大学,2010:25—26. [15】宋丽华,高珂.嵌入式 Linux下USB摄像头驱动实现[J】.计算 机工程,2010,36(9):282.284. 【l6】黄思华,杜其伟.基于MiniGUI和嵌入式Linux的PDA设计 与实现[J].计算机应用,2009,29(12):207.209. (1 7] 胡术.UNIX平台下进程定位与运行监控 的实现 【J】.计算机应 用,2008,28(12):288.290.
本文档为【OpenCV与智能手机】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_397185
暂无简介~
格式:pdf
大小:343KB
软件:PDF阅读器
页数:4
分类:互联网
上传时间:2012-03-07
浏览量:39