城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

Opencvpython3。8人脸识别PIL法中文显示

7月11日 火凤派投稿
  1说明:
  1。1参考文章:https:www。cnblogs。comxp12345p9818435。html
  1。2对原代码进行注释,调试,增加PIL法显示中文标示。
  1。3获取摄像头实现动态人脸识别。
  1。4分为:侦测收集训练识别。
  2准备:
  2。1安装opencv:pipinstallopencvpython
  2。2注意:导入模块importcv2cv2不是版本号
  科普一下:
  cv2中的2不是指定发布的版本号,而是为了区分OpenCV的C和C的版本。
  OpenCV1。x使用C开发;而OpenCV2。x使用C。
  2。3环境:
  华为笔记本电脑、深度deepinlinux操作系统、谷歌浏览器、python3。8和微软vscode编辑器。
  3文件结构:
  3。1图:
  3。2层次示意图:
  3。3两个xml文件来自:分类器一般位于安装包cv2下比如:本机:file:usrlocalpython3。8libpython3。8sitepackagescv2data下,复制过来即可
  以下代码基于笔记本电脑的摄像头,需打开,训练自己头像
  4五个代码依次进行:
  4。11FaceDetection。py代码:人脸检测importnumpyasnpimportcv2人脸识别分类器faceCascadecv2。CascadeClassifier(homexgjDesktopfacedehaarcascadefrontalfacedefault。xml)识别眼睛的分类器eyeCascadecv2。CascadeClassifier(homexgjDesktopfacedehaarcascadeeye。xml)开启摄像头capcv2。VideoCapture(0)okTrueresult〔〕原bug,自己补充whileok:读取摄像头中的图像,ok为是否读取成功的判断参数ok,imgcap。read()转换成灰度图像graycv2。cvtColor(img,cv2。COLORBGR2GRAY)人脸检测facesfaceCascade。detectMultiScale(gray,scaleFactor1。2,minNeighbors5,minSize(32,32))result〔〕在检测人脸的基础上检测眼睛for(x,y,w,h)infaces:facgraygray〔y:(yh),x:(xw)〕result〔〕eyeseyeCascade。detectMultiScale(facgray,1。3,2)眼睛坐标的换算,将相对位置换成绝对位置for(ex,ey,ew,eh)ineyes:result。append((xex,yey,ew,eh))画矩形框脸部for(x,y,w,h)infaces:cv2。rectangle(img,(x,y),(xw,yh),(255,0,0),2)眼睛for(ex,ey,ew,eh)inresult:cv2。rectangle(img,(ex,ey),(exew,eyeh),(0,255,0),2)显示cv2。imshow(video,img)退出定义kcv2。waitKey(1)ifk27:pressESCtoquitbreakcap。release()cv2。destroyAllWindows()
  注意4。1代码不需要也没关系
  4。22FaceDataCollect。py代码:FaceDataCollect,人脸数据收集importcv2importos调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2capcv2。VideoCapture(0)注意路径facedetectorcv2。CascadeClassifier(homexgjDesktopfacedehaarcascadefrontalfacedefault。xml)请输入id:0为一个人,第二个人请输入1,在4py中检测识别中idnums有用faceidinput(enteruserid:)print(Initializingfacecapture。Lookatthecameraandwait。。。)count0whileTrue:从摄像头读取图片sucess,imgcap。read()转为灰度图片graycv2。cvtColor(img,cv2。COLORBGR2GRAY)检测人脸facesfacedetector。detectMultiScale(gray,1。3,5)面部画框for(x,y,w,h)infaces:cv2。rectangle(img,(x,y),(xw,yw),(255,0,0))count1保存图像,注意路径cv2。imwrite(homexgjDesktopfacedeimguser。str(faceid)。str(count)。jpg,gray〔y:yh,x:xw〕)cv2。imshow(image,img)保持画面的持续。kcv2。waitKey(1)ifk27:通过esc键退出摄像breakelifcount1000:得到1000个样本后退出摄像,可自定义数值大小break关闭摄像头cap。release()cv2。destroyAllWindows()大概需要半个小时,收集1000张图片我自己约5分钟后暂停,期间可以做各种面部动作,我大概收集50张
  4。33facetraining。py代码:facetraining,人脸数据训练importnumpyasnpfromPILimportImageimportosimportcv2人脸数据路径,上面保存的灰色照片数据集pathhomexgjDesktopfacedeimgrecognizercv2。face。LBPHFaceRecognizercreate()detectorcv2。CascadeClassifier(homexgjDesktopfacedehaarcascadefrontalfacedefault。xml)defgetImagesAndLabels(path):imagePaths〔os。path。join(path,f)forfinos。listdir(path)〕faceSamples〔〕ids〔〕forimagePathinimagePaths:PILimgImage。open(imagePath)。convert(L)convertittograyscaleimgnumpynp。array(PILimg,uint8)idint(os。path。split(imagePath)〔1〕。split(。)〔1〕)facesdetector。detectMultiScale(imgnumpy)for(x,y,w,h)infaces:faceSamples。append(imgnumpy〔y:yh,x:xw〕)ids。append(id)returnfaceSamples,idsprint(Trainingfaces。Itwilltakeafewseconds。Wait。。。)faces,idsgetImagesAndLabels(path)recognizer。train(faces,np。array(ids))保存训练好的文件recognizer。write(homexgjDesktopfacedefacetrainertrainer。yml)print({0}facestrained。ExitingProgram。format(len(np。unique(ids))))
  4。4人脸识别:
  4。4。1英文版的人脸识别4facerecognition。py代码:facerecognition人脸检测并识别,显示人名importcv2recognizercv2。face。LBPHFaceRecognizercreate()recognizer。read(homexgjDesktopfacedefacetrainertrainer。yml)cascadePathhomexgjDesktopfacedehaarcascadefrontalfacedefault。xmlfaceCascadecv2。CascadeClassifier(cascadePath)fontcv2。FONTHERSHEYSIMPLEX这里为0或者1都没有关系idnum1names〔Allen,Bob〕names中存储人的名字,若该人id为0则他的名字在第一位,id位1则排在第二位,以此类推camcv2。VideoCapture(0)minW0。1cam。get(3)minH0。1cam。get(4)whileTrue:ret,imgcam。read()graycv2。cvtColor(img,cv2。COLORBGR2GRAY)facesfaceCascade。detectMultiScale(gray,scaleFactor1。2,minNeighbors5,minSize(int(minW),int(minH)))for(x,y,w,h)infaces:cv2。rectangle(img,(x,y),(xw,yh),(0,255,0),2)idnum,confidencerecognizer。predict(gray〔y:yh,x:xw〕)ifconfidence100:idnumnames〔idnum〕confidence{0}。format(round(100confidence))else:idnumunknownconfidence{0}。format(round(100confidence))cv2。putText(img,str(idnum),(x5,y5),font,1,(0,0,255),1)不能显示中文cv2。putText(img,str(confidence),(x5,yh5),font,1,(0,0,0),1)cv2。imshow(camera,img)kcv2。waitKey(10)ifk27:breakcam。release()cv2。destroyAllWindows()
  4。4。2PIL法显示中文的人脸识别5facerecognitionzhPIL。py代码:自己添加的facerecognition人脸检测,PIL法显示中文人名importcv2增加的PIL法显示中文importnumpyfromPILimportImage,ImageDraw,ImageFont定义一个函数defcv2ImgAddText(img,text,left,top,textColor(0,255,0),textSize20):if(isinstance(img,numpy。ndarray)):判断是否OpenCV图片类型imgImage。fromarray(cv2。cvtColor(img,cv2。COLORBGR2RGB))创建一个可以在给定图像上绘图的对象drawImageDraw。Draw(img)字体的格式,自己下载华文仿宋字体,放在根目录下fontStyleImageFont。truetype(hwfs。ttf,textSize,encodingutf8)绘制文本draw。text((left,top),text,textColor,fontfontStyle)转换回OpenCV格式returncv2。cvtColor(numpy。asarray(img),cv2。COLORRGB2BGR)recognizercv2。face。LBPHFaceRecognizercreate()recognizer。read(homexgjDesktopfacedefacetrainertrainer。yml)cascadePathhomexgjDesktopfacedehaarcascadefrontalfacedefault。xmlfaceCascadecv2。CascadeClassifier(cascadePath)fontcv2。FONTHERSHEYSIMPLEX这里为0或者1都没有关系idnum0names〔机器人,Bob〕names中存储人的名字,若该人id为0则他的名字在第一位,id位1则排在第二位,以此类推camcv2。VideoCapture(0)minW0。1cam。get(3)minH0。1cam。get(4)whileTrue:ret,imgcam。read()graycv2。cvtColor(img,cv2。COLORBGR2GRAY)facesfaceCascade。detectMultiScale(gray,scaleFactor1。2,minNeighbors5,minSize(int(minW),int(minH)))for(x,y,w,h)infaces:cv2。rectangle(img,(x,y),(xw,yh),(0,255,0),2)idnum,confidencerecognizer。predict(gray〔y:yh,x:xw〕)ifconfidence100:idnumnames〔idnum〕confidence{0}。format(round(100confidence))else:idnumunknownconfidence{0}。format(round(100confidence))cv2。putText(img,str(idnum),(x5,y5),font,1,(0,0,255),1)不能显示中文注意下面格式,位置去掉元组格式,并int化imgcv2ImgAddText(img,str(idnum),int(x5),int(y5),(0,0,255),20)显示为中文PIL法cv2。putText(img,str(confidence),(x5,yh5),font,1,(0,0,0),1)cv2。imshow(camera,img)kcv2。waitKey(10)ifk27:breakcam。release()cv2。destroyAllWindows()
  效果图
  以上代码亲测可用
  喜欢的人,请点赞、关注、评论、转发和收藏。
  谢谢原博主。
投诉 评论 转载

1杯豌豆1杯奶,滑嫩嫩,凉丝丝,一口降温5,还能解暑防便秘如果你也在为娃便秘而犯愁,那今天这道豌豆酸奶糕,我建议你一定要试试。主要食材是豌豆和红豆。它俩都是高膳食纤维的食材,其中红豆的纤维量是香蕉的6倍,论通便,它可比香蕉厉害多……孕期生病怎么办?赶紧看看这篇实用的孕期用药科普文,值得收藏作者:中山大学孙逸仙纪念医院管宴萍审核:中山大学孙逸仙纪念医院陈楚雄医生,怀孕30天在不知道的情况下,我吃了感冒药,孩子会有影响吗?医生,我前段时间过敏了,吃……Opencvpython3。8人脸识别PIL法中文显示1说明:1。1参考文章:https:www。cnblogs。comxp12345p9818435。html1。2对原代码进行注释,调试,增加PIL法显示中文标示。……修道的两种选择各位好,我是田川,一个正在大道上努力探索之人。大道无形,生育天地;大道无情,运行日月;大道无名,长养万物。《太上老君说常清静经》关于道,想必各位都有自己的理解,在下……你觉得坐月子去月子中心好,还是在家好?经济条件允许当然去月子中心,我头胎在家做的月子,我和老公啥都不懂,公婆三十多年没碰小孩子,一家子抓瞎,之前打算请月嫂,婆婆不喜欢家里有陌生人,说月子孩子就吃了睡睡了吃,结果,我……女人婚后活成这样,老公都不心疼你有人说婚姻是女人的第二次生命,深以为然,因为婚姻是女人人生中最重要的转折点,一个女人余生的幸福都压在婚姻里了。所以很多女人,结婚之后,就把自己全部时间精力,奉献给了婚姻,……父母必读孩子的好习惯从哪里来?著名教育家叶圣陶曾说过:什么是教育?简单一句话,就是养成良好的习惯。成长中的小孩子,总会有这样或那样的一些不良习惯。当你看到孩子的不良习惯时,有没有想过,这恰恰有可能是我……我的女儿,十六岁,被校园暴力六年半只要你正常为人处世,就不会被校园暴力;你是不是初中的时候自己有一些问题,所以才被欺负的?。。。三月五号,这是她的女儿呆在家里的第四天,也是被校园暴力整六年的日……3岁6岁的孩子,是先学写字还是先开发智力?近期,罗妈妈收到了网友提的这么一个问题:3岁的孩子,是先学写字还是先开发智力?那么罗妈妈的答案是非常肯定的,36岁,是孩子智力发展最关键的时期,当然是以开发智……送给小小宝宝的绘本,6月新书速递不要说教,只想愉快地玩耍1。《挠痒痒挠痒痒》《挠痒痒挠痒痒》是一本低幼绘本,一部难得的集亲子游戏、动物认知于一身的家庭绘本。适读年龄:1岁作者说灵感来自于自己……解决焦虑,不妨试试运动疗法面对疫情长期宅家,加上各种担心与恐慌,难免会出现焦虑紧张情绪,有严重者甚至出现心慌、胸闷等症状,最近在网上接到咨询的类似患者不在少数。我在前年因为工作压力也出现过严重的心……婚姻你想象中的婚姻生活是什么样的,现实与你的理想一致吗?你理想的婚姻和你现在的婚姻是一样的吗?你理想的生活和你现在的生活是一样的吗?网友回复:天差地别!差距非常大网友回复:和自己想象的差不多,两人都非常有爱的对双方……
答疑22岁无所事事的儿子,我该如何接受他?冻人的天气朋友喉咙发炎我陪她去医院看病医生检查后说没啥问题脖子上多一物危害心脏健康先学后教模式在初中历史课堂中的应用研究患上哮喘支气管炎能治好吗世界上最大的金字塔胡夫金字塔米万吨解读易经第四卦蒙卦家家母婴给宝宝的辅食添加过程中要避免3大误区如何鉴别龙虾好坏细数吃龙虾误区产后头几天的行动流程指导海韵教育丨不分文理科采用312模式,多省发布高考改革方案西游爆笑连环笑二战史上日本偷袭珍珠港的报复杜立特奇袭东京骆氏取名大全姓骆的宝宝起名大全方水母是一种什么样的水母?又称之箱水母(带有剧毒)碰撞柳州二月榕叶落尽偶题的原文翻译及赏析还有人不知道?原来baby熊黛林梁洛施她们背后是同一个大佬小学生过年逛超市作文400字怀孕8个半月,望着身边熟睡的老公,我想给他两巴掌我的校园生活软件年终工作总结班车被撞误工费怎么计算?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找