版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[18]为了能够实现对目标的训练与检测,所有的特征值都将用于图像训练,虽然找到能够区分目标为真样本或假样本的界限是很明显的,但是也会产生大量错误,使得识别不够准确,造成错误分类。这就需要在各种特征值中找到错误率最低的特征值,说明其为检测目标是否正确的最佳特征。(此过程十分复杂。在开始时每个目标图像都与标准图像有相似值,在分类后,被错误分类的目标图像相似度对加大,在进项筛选后再次重复检测,得到新的相似度与阈值。不断重复直到达到要求的准确率或者精确度)最终得到的分类器是错误分类器的集合品,将分类器结合在一起诞生的高精确度分类器。OpenCV中的Haar级联检测
OpenCV自带了训练器和检测器。需要使用检测器OpenCV已经包含了很多已经训练好的分类器,其中包括:面部,眼睛,微笑等。这些XML文件保存在/opencv/data/haarcascades/文件夹中。下面我们将使用∨创建一个面部和眼部检测器。
首先我们要加载需要的XL分类器。然后以灰度格式加载输入图像或者是视频。
然后,我们在图像中检测面部。如果检测到面部,它会返回面部所在的矩形区域Rect(x,y,w,h)。一旦我们获得这个位置,我们可以创建一个RO并在其中进行眼部检测。考虑到本论文设计要求的任务不是那么复杂,仅仅进行普遍人脸的识别无需再进项精确化的检测,因为本次购买的树莓派的内存较小,无法完成大量的人脸数据接收与检测,也不支持进行高速的深度学习。所以本设计采用采用方案一基于OpenCV的人脸识别。在树莓派的Linux操作系统下利用QT库来开发图形界面,以OpenCV图像处理库为基础,使用OpenCV自带的算法进行对任务的处理,在通过影像系统对目标进行接收处理,人脸识别是用OpenCV内置的已经训练好的Hear分类器对目标图片处理比对,检测结果利用PCA算法进行训练与比对。以下为人脸识别追踪程序的源代码importnumpyasnpimportcv2face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')eye_cascade=cv2.CascadeClassifier('haarcascade_eye.xml')cap=cv2.VideoCapture(0)while1:ret,img=cap.read()img=cv2.flip(img,1)gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)faces=face_cascade.detectMultiScale(gray,1.3,5)for(x,y,w,h)infaces:cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)roi_gray=gray[y:y+h,x:x+w]roi_color=img[y:y+h,x:x+w]print(int(x+w/2),int(y+h/2))eyes=eye_cascade.detectMultiScale(roi_gray)for(ex,ey,ew,eh)ineyes:cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)#imgR=cv2.flip(img,1)cv2.imshow('img',img)k=cv2.waitKey(30)&0xffifk==27:#press'ESC'toquitbreakcap.release()cv2.destroyAllWindows()importnumpyasnpimportcv2importosimporttimeimportRPi.GPIOasGPIOimportAdafruit_PCA9685importthreadingimportsysreload(sys)sys.setdefaultencoding('utf8')#初始化PCA9685和舵机servo_pwm=Adafruit_PCA9685.PCA9685()#实例话舵机云台#设置舵机初始值,可以根据自己的要求调试servo_pwm.set_pwm_freq(60)#设置频率为60HZservo_pwm.set_pwm(5,0,325)#底座舵机servo_pwm.set_pwm(4,0,325)#倾斜舵机time.sleep(1)face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')eye_cascade=cv2.CascadeClassifier('haarcascade_eye.xml')#初始化摄像头并设置阙值usb_cap=cv2.VideoCapture(0)#设置显示的分辨率,设置为320×240pxusb_cap.set(3,320)usb_cap.set(4,240)pid_x=0pid_y=0pid_w=0pid_h=0#舵机云台的每个自由度需要4个变量pid_thisError_x=0#当前误差值pid_lastError_x=0#上一次误差值pid_thisError_y=0pid_lastError_y=0#舵机的转动角度pid_X_P=330pid_Y_P=330#转动角度pid_flag=0makerobo_facebool=False#initializeLEDGPIOredLed=21#LED灯GPIO.setwarnings(False)GPIO.setmode(GPIO.BCM)GPIO.setup(redLed,GPIO.OUT)#机器人舵机旋转defRobot_servo():whileTrue:servo_pwm.set_pwm(5,0,650-pid_X_P)servo_pwm.set_pwm(4,0,650-pid_Y_P)servo_tid=threading.Thread(target=Robot_servo)#多线程servo_tid.setDaemon(True)servo_tid.start()#开启线程#StartwithLEDoffGPIO.output(redLed,GPIO.LOW)ledOn=Falsewhile1:ret,frame=usb_cap.read()#加载图像gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)faces=face_cascade.detectMultiScale(gray,1.3,5)for(x,y,w,h)infaces:#cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)roi_gray=gray[y:y+h,x:x+w]roi_color=frame[y:y+h,x:x+w]eyes=eye_cascade.detectMultiScale(roi_gray)for(ex,ey,ew,eh)ineyes:cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)max_face=0value_x=0#找到人脸画矩形iflen(faces)>0:(pid_x,pid_y,pid_w,pid_h)=faces[0]cv2.rectangle(frame,(pid_x,pid_y),(pid_x+pid_h,pid_y+pid_w),(0,255,0),2)result=(pid_x,pid_y,pid_w,pid_h)pid_x=result[0]+pid_w/2pid_y=result[1]+pid_h/2makerobo_facebool=True#误差值处理pid_thisError_x=pid_x-160pid_thisError_y=pid_y-120#自行对P和D两个值进行调整,检测两个值的变化对舵机稳定性的影响pwm_x=pid_thisError_x*5+1*(pid_thisError_x-pid_lastError_x)pwm_y=pid_thisError_y*5+1*(pid_thisError_y-pid_lastError_y)#迭代误差值操作pid_lastError_x=pid_thisError_xpid_lastError_y=pid_thisError_ypid_XP=pwm_x/100pid_YP=pwm_y/100#pid_X_Ppid_Y_P为最终PID值pid_X_P=pid_X_P+int(pid_XP)pid_Y_P=pid_Y_P+int(pid_YP)#点亮LED灯GPIO.output(redLed,GPIO.HIGH)#限值舵机在一定的范围之内ifpid_X_P>650:pid_X_P=650ifpid_X_P<0:pid_X_P=0ifpid_Y_P>650:pid_Y_P=650ifpid_X_P<0:pid_Y_p=0#如果没有检测到球,关闭LED灯else:GPIO.output(redLed,GPIO.LOW)#显示图像cv2.imshow("MAKEROBORobot",frame)ifcv2.waitKey(1)==119:break#doabitofcleanupprint("\n[INFO]ExitingProgramandcleanupstuff\n")GPIO.cleanup()cap.release()cv2.destroyAllWindows()最终运行程序视频输出能出现下图所示,蓝色方框能显示面部轮廓,绿色方框可以显示面部信息,嘴部信息以及面部轮廓,且舵机能随人脸转动的方向进行追踪,说明系统已经可以正常运转工作。3.9本章小结本章对理论知识进行了实际操作,首先按要求组装好了树莓派硬件,连接上摄像头与舵机,完成了视觉系统的搭建,连接了各个引脚,激活安装好了树莓派系统。安装了必要的软件,以python语言设置了舵机调零程序进行了舵机调零,测试了摄像头能否正常工作以及OpenCV内置的hear级联器能否正常工作,分类器是否对面部,眼睛实行检测。舵机在识别到人脸是还能自行转动,对人脸进行追踪。第四章总结与展望本文目标利用树莓派为主机,辅以影像系统,利用可视化界面连接树莓派系统用python对其进行编程,最终使得连接着摄像头的舵机能对人脸进行识别并进行追踪。本文的软件为Opencv视觉处理库,其支持多种语言,并且能运行在不同的操作系统中,提供了多种接口函数能对不同场景进行识别处理,内置的Hear检测器可以对人脸进行识别,也可以利用OpenCV训练其他训练器。利用PCA算法将输入的图像降维,转换为灰度图像提取出特征值并且节省了内存空间,利用目标的特征值与已经训练好的面部特征值进行比对,得到正确识别的阈值,最终能够识别出人脸。还利用PID控制器对舵机进行控制,来对人脸等物体进行追踪。使人脸始终在视频中心。当然本文还有许多不足之处,例如,对PID算法的推导研究还不够细致,无法得到其运行的公式,且不理解算法的原理。并且受限于树莓派的内存,以及研究不够深入,无法实现大量的运算大量录入人脸信息,本设计的树莓派人脸识别系统还无法分辨具体的人脸,例如显示不同人的人脸信息并录入系统,在一步将利用在此基础上继续进项优化改进参考文献刘光富.基于多角度视频的人脸识别系统的设计与实现[D].苏州大学,2018.1~74.师文喜,王德勇,敖乃翔等.三维人脸识别技术在安防领域的应用研究[J].中国公共安全(学术版),2016,000(002):127-131.DahmouniA,AharraneN,ElMoutaouakilK,etal.AFaceRecognitionBasedBiometricSolutioninEducation[J].PatternRecognitionandImageAnalysis,2018,28(4):758-770.赵星,王芳,杨勇,等.集成成像三维显示系统显示性能的研究进展[J].中国光学,2012,(3).209-221.树莓派官网.树莓派官网[引用日期2016-10-03]带你揭秘你绝不知道树莓派的知识和应用.爱板网[引用日期2014-12-29]Windows10IoT:Powering
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学大一(生物技术)逻辑思维能力测试卷
- 2025年大学大一(生物技术)细胞基础认知阶段测试卷
- 初三生物(专项训练)2025-2026年下学期期中测试卷
- 深度解析(2026)《GBT 18310.9-2003纤维光学互连器件和无源器件 基本试验和测量程序 第2-9部分试验 冲击 》
- 深度解析(2026)《GBT 18114.4-2010稀土精矿化学分析方法 第4部分:氧化铌、氧化锆、氧化钛量的测定 电感耦合等离子体发射光谱法》
- 深度解析(2026)《GBT 17980.96-2004农药 田间药效试验准则(二) 第96部分杀菌剂防治香蕉贮藏病害》
- 茂名职业技术学院《绿色建筑与节能技术》2025-2026学年第一学期期末试卷
- 龙的传人课件
- 龙炎飞的课件
- 医患关系的价值反思
- 机械图样绘制与识读智慧树知到期末考试答案章节答案2024年沈阳职业技术学院
- DLT817-2014立式水轮发电机检修技术规程
- 高三下学期二模语文试卷汇编:写作专题
- 外科学手术器械的维护与保养
- 自愿放弃入伍承诺书
- 铝板拆除施工方案
- 植入式静脉给药装置(输液港)-中华护理学会团体标准2023
- 0031预防成人经口气管插管非计划性拔管护理专家共识
- THMSRX型实训指导书
- 原发性支气管肺癌教案
- GB/T 23280-2009开式压力机精度
评论
0/150
提交评论