应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

Dlib库教程(2)联合python的人脸检测标记识别

  1说明
  1。1准备篇《Dlib库教程(1):介绍、linux下的安装与避坑》。
  1。2本次讲解Dlib库的强大的联合python的人脸检测、标记和识别功能。
  1。3熟悉Dlib库的python的API功能函数。
  1。4熟悉python编程相关知识,讲解思路清晰,注释仔细,干货满满,由浅入深,一秒入门。
  1。5图片来自今日头条正版免费图库,表示对女神的喜爱,致敬,仅供学习。
  1。6环境:python3。8dlib19。21。99opencv4。4。0deepinlinux操作系统。
  1。jpeg
  2。jpeg
  2dlibopencvpython的人脸检测、识别和标示
  2。1代码:人脸检测,画框和画68点特征显示第1步:导入模块importdlibimportcv2第2步:模型加载这是人脸68点特征检测器模型,提前官网下载好shapepredictorpathhomexgjDesktopdlibshapepredictor68facelandmarks。dat获取人脸分类器detectordlib。getfrontalfacedetector()获取人脸68点特征检测器,进行人脸面部轮廓特征提取:predictordlib。shapepredictor(shapepredictorpath)第3步:被检测图片载入被检测图片路径imgpathhomexgjDesktopdlibpic2。jpeg读图片,cv。imread()共两个参数,第二个为如何读取图片,包括cv2。IMREADCOLOR:读入一个彩色图片imgcv2。imread(imgpath,cv2。IMREADCOLOR)imgcv2。imread(imgpath)默认,等同于上面读取彩色图片这个是cv2特有的图片读取,需要转换,否则不是原图b,g,rcv2。split(img)img2cv2。merge(〔r,g,b〕)侦测人脸detsdetector(img2,1)第4步:forindex,faceinenumerate(dets):leftface。left()topface。top()rightface。right()bottomface。bottom()在人脸上标示绿色方框cv2。rectangle(img,(left,top),(right,bottom),(0,255,0),1)shapepredictor(img,face)forindex,ptinenumerate(shape。parts()):ptpos(pt。x,pt。y)标示人脸68个特征圆点cv2。circle(img,ptpos,1,(255,0,0),1)第5步:展示已经人脸识别后的带有标示图片cv2。imshow(pic,img)cv2。namedWindow(pic,cv2。WINDOWAUTOSIZE)窗口关闭设置kcv2。waitKey(0)cv2。destroyAllWindows()
  2。2图
  3dlibcv2numpy法人脸检测和识别
  3。1代码encoding:utf8代码来源https:blog。csdn。netliuxiao214articledetails83411820?utmmediumdistribute。pcrelevant。nonetaskblogBlogCommendFromMachineLearnPai21。channelparamdepth1utmsourcedistribute。pcrelevant。nonetaskblogBlogCommendFromMachineLearnPai21。channelparam人脸检测,画框importdlibimportnumpyasnpimportcv2获得人脸矩形的坐标信息函数defrecttobb(rect):xrect。left()yrect。top()wrect。right()xhrect。bottom()yreturn(x,y,w,h)图片大小调整函数defresize(image,width1200):将待检测的image进行resizerwidth1。0image。shape〔1〕dim(width,int(image。shape〔0〕r))resizedcv2。resize(image,dim,interpolationcv2。INTERAREA)returnresized人脸检测函数defdetect():加载待检测的图片imagefilehomexgjDesktopdlibpic1。jpegimagecv2。imread(imagefile)调整大小imageresize(image,width1200)灰度转换graycv2。cvtColor(image,cv2。COLORBGR2GRAY)dlib人脸检测器和人脸检测画框detectordlib。getfrontalfacedetector()dlib人脸检测矩形框4点坐标和对图像画人脸框rectsdetector(gray,1)画框和输出文字for(i,rect)inenumerate(rects):(x,y,w,h)recttobb(rect)cv2。rectangle(image,(x,y),(xw,yh),(0,255,0),2)cv2。putText(image,Face:{}。format(i1),(x10,y10),cv2。FONTHERSHEYSIMPLEX,0。5,(0,255,0),2)图片展示cv2。imshow(Output,image)cv2。waitKey(0)ifnamemain:detect()
  3。2图
  3。3增加功能,标注68人脸特征点
  3。3。1代码encoding:utf8importdlibimportnumpyasnpimportcv2获得人脸矩形的坐标信息defrecttobb(rect):xrect。left()yrect。top()wrect。right()xhrect。bottom()yreturn(x,y,w,h)将包含68个特征的的shape转换为numpyarray格式defshapetonp(shape,dtypeint):coordsnp。zeros((68,2),dtypedtype)foriinrange(0,68):coords〔i〕(shape。part(i)。x,shape。part(i)。y)returncoords将待检测的image进行resizedefresize(image,width1200):rwidth1。0image。shape〔1〕dim(width,int(image。shape〔0〕r))resizedcv2。resize(image,dim,interpolationcv2。INTERAREA)returnresized人脸检测、识别、标注68特征点deffeature():加载被检测图片imagefilehomexgjDesktopdlibpic2。jpegimagecv2。imread(imagefile)imageresize(image,width1200)graycv2。cvtColor(image,cv2。COLORBGR2GRAY)加载dlib功能函数detectordlib。getfrontalfacedetector()predictordlib。shapepredictor(homexgjDesktopdlibshapepredictor68facelandmarks。dat)rectsdetector(gray,1)shapes〔〕人脸检测、识别和画框for(i,rect)inenumerate(rects):shapepredictor(gray,rect)获取特征点shapeshapetonp(shape)存入列表中shapes。append(shape)(x,y,w,h)recttobb(rect)cv2。rectangle(image,(x,y),(xw,yh),(0,255,0),2)cv2。putText(image,Face:{}。format(i1),(x10,y10),cv2。FONTHERSHEYSIMPLEX,0。5,(0,255,0),2)获取68关键点并画圈标注forshapeinshapes:for(x,y)inshape:cv2。circle(image,(x,y),2,(0,0,255),1)cv2。imshow(Output,image)cv2。waitKey(0)ifnamemain:feature()
  3。3。2图
  4高级一点:视频实时检测人脸和标注
  4。1代码:codingutf8参考文章https:blog。csdn。netm037477175articledetails78151320?locationNum2fps1utmmediumdistribute。pcrelevant。nonetaskblogtitle6spm1001。2101。3001。4242摄像头实时,人脸检测和画框和画弧,默认红色框和蓝色人脸特征线importcv2importdlibdlib模型加载predictorpathhomexgjDesktopdlibshapepredictor68facelandmarks。dat初始化landmarkpredictordlib。shapepredictor(predictorpath)初始化dlib人脸检测器detectordlib。getfrontalfacedetector()初始化dlib自带显示窗口windlib。imagewindow()opencv加载视频文件capcv2。VideoCapture(homexxx。mp4)摄像头读取capcv2。VideoCapture(0)ifcap。isOpened():print(Unabletoconnecttocamera!)循环whilecap。isOpened():ret,cvimgcap。read()ifcvimgisNone:breakRGBTOBGRimgcv2。cvtColor(cvimg,cv2。COLORRGB2BGR)侦测和检测人脸detsdetector(img,0)shapes〔〕fori,dinenumerate(dets):shapepredictor(img,d)shapes。append(shape)win。clearoverlay()win。setimage(img)iflen(shapes)!0:foriinrange(len(shapes)):win。addoverlay(shapes〔i〕)win。addoverlay(dets)cap。release()
  4。2再高级一点的代码调用摄像头,进行人脸捕获,和68个特征点的追踪参考原作者,感谢原作者Author:coneypoBlog:http:www。cnblogs。comAdaminXieGitHub:https:github。comconeypoDlibfacedetectionfromcamera第1步:导入模块importdlibimportnumpyasnpimportcv2时间模块用于截图保存后生成的文件名importtimeimporttimeit第2步:初始化储存截图的目录pathscreenshotshomexgjDesktopdlibdatascreenshotsdlib模块加载detectordlib。getfrontalfacedetector()predictordlib。shapepredictor(homexgjDesktopdlibshapepredictor68facelandmarks。dat)创建cv2摄像头对象capcv2。VideoCapture(0)cap。set(propId,value)设置视频参数,propId设置的视频参数,value设置的参数值cap。set(3,480)截图screenshots的计数器cnt0时间列表timecostlist〔〕第3步:cap。isOpened()返回truefalse检查初始化是否成功whilecap。isOpened():cap。read()返回两个值:一个布尔值truefalse,用来判断读取视频是否成功是否到视频末尾图像对象,图像的三维矩阵flag,imrdcap。read()每帧数据延时1ms,延时为0读取的是静态帧kcv2。waitKey(1)取灰度imggraycv2。cvtColor(imrd,cv2。COLORRGB2GRAY)startpointstarttimeit。defaulttimer()人脸数facesdetector(imggray,0)待会要写的字体fontcv2。FONTHERSHEYSIMPLEX标68个点iflen(faces)!0:检测到人脸foriinrange(len(faces)):landmarksnp。matrix(〔〔p。x,p。y〕forpinpredictor(imrd,faces〔i〕)。parts()〕)foridx,pointinenumerate(landmarks):68点的坐标pos(point〔0,0〕,point〔0,1〕)利用cv2。circle给每个特征点画一个圈,共68个cv2。circle(imrd,pos,2,color(139,0,0))利用cv2。putText输出168cv2。putText(imrd,str(idx1),pos,font,0。2,(187,255,255),1,cv2。LINEAA)cv2。putText(imrd,faces:str(len(faces)),(20,50),font,1,(0,0,0),1,cv2。LINEAA)endpointstoptimeit。defaulttimer()timecostlist。append(stopstart)else:没有检测到人脸cv2。putText(imrd,noface,(20,50),font,1,(0,0,0),1,cv2。LINEAA)添加说明imrdcv2。putText(imrd,pressS:screenshot,(20,400),font,0。8,(255,255,255),1,cv2。LINEAA)imrdcv2。putText(imrd,pressQ:quit,(20,450),font,0。8,(255,255,255),1,cv2。LINEAA)按下s键保存ifkord(s):cnt1cv2。imwrite(pathscreenshotsscreenshotstr(cnt)time。strftime(YmdHMS,time。localtime())。jpg,imrd)按下q键退出ifkord(q):break窗口显示参数取0可以拖动缩放窗口,为1不可以cv2。namedWindow(camera,0)cv2。namedWindow(camera,1)cv2。imshow(camera,imrd)释放摄像头cap。release()删除建立的窗口cv2。destroyAllWindows()
  5备注:附注学习和复习opencv的色彩转换问题
  5。1代码coding:utf8熟悉opencv色彩转换问题代码所在终端打开输入python3。811。pyhomexgjDesktopdlibpic1。jpegimportsysimportcv2importdlib采用skimage读取图片代码简单些,img全部为imgfromskimageimportioadd1detectordlib。getfrontalfacedetector()windlib。imagewindow()forfinsys。argv〔1:〕:imgio。imread(f)add2imgcv2。imread(f)opencv的增加色彩转换,增加2行b,g,rcv2。split(img)img1cv2。merge(〔r,g,b〕)detsdetector(img1,1)使用detector进行人脸检测fori,dinenumerate(dets):xd。left()yd。top()wd。right()hd。bottom()cv2。rectangle(img1,(x,y),(w,h),(0,255,0))print(({},{},{},{})。format(x,y,(wx),(hy)))win。setimage(img1)io。imsave(homexgjDesktopdlibPDlibtest。jpg,img)增加2行色彩转换r,g,bcv2。split(img1)img2cv2。merge(〔b,g,r〕)cv2。imwrite(homexgjDesktopdlibPDlibtest。jpg,img2)等待点击dlib。hitentertocontinue()
  5。2操作效果图
  下一次讲,dlib的目标检测和实时视频的行人计数。

教育一生活记录谈教育谈起教育,有点高雅又有点时髦,有点无足轻重却又难能可贵,似乎很简单但又是那么的无奈,如果说无法效仿但有些人却做到了。教育,是日常琐事,却又变幻无数。教育,又是一门艺……学生制服清纯搭配展气质图片一起来看看小编今天介绍的学生制服,相关的图片,清纯搭配。最有学生气质,富有清纯气质的学生制服图片及搭配,本文精彩介绍。1、学生衬衣搭配格子短裙沿袭英伦学院风格的学生……爱孩子,就让他多做点家务家务活不用你来做,赶紧去学习!碗筷放在那就行,别打碎了把自己伤到。。。。。。你力气太小没法把衣服洗干净,还不如让爸妈来弄。怕耽误孩子学习、怕孩子受伤、怕孩子帮……了解亚马逊,了解企业的发展进程第一次购买KINDLE是在二手交易平台,彼时对于电子书阅读停留在手机的阅读APP上。然而刚开始使用KINDLE发现,相比于传统阅读,电子设备的便携性、储存量、摒弃其他干扰专注阅……房祖名前途尽毁,小龙女没钱买口罩,郭麒麟为何如此优秀?可能在之前,大家对郭麒麟其实影响是不深的,不过,随着近期《拜托了冰箱》《向往的生活》《最强大脑》等节目的播出,郭麒麟凭着优秀的表现,得到了众人的认可。说到郭麒麟,不得不提……非常厉害的星座女,恋爱手段超高,能把爱人管教得很服帖爱情是一场浪漫的旅行,也是两个人感情生活的开始,因此每个人都会对爱情充满渴望和向往,从不会改变。可要是说爱情是一场博弈时,谁更高明,谁就能够在爱情中占主动地位,所以也就会……男人认定了你,才会说这三句话,比我爱你还要甜简单的一句我爱你,会让无数女人动容,在她们看来,男人能说出这样的话,代表着她们在对方心里的地位。可能也会因为这句话,女人愿意守在男人身边一辈子。而大部分男人,都抓住……学会自省,把握住人生方向,让孩子每天进步一点点自我反省的能力是人们一种内在的人格智力,是认识自我、完善自我、不断进步的前提条件。事实证明,只有学会自省的人,才能把握住人生方向,才能为自己的事业发展铺平道路;只有善于自省的人……在自家门口安装摄像头,会造成邻居对个人隐私权保护的担忧吗?山东省居民管某与老伴均为耄耋老人,近段时间,因李某(同楼层对门邻居)安装摄像头一事让管某夫妇心烦意乱、夜不能寐。管某认为,李某未经同意将摄像头安装在公共通道上,使得自己个人生活……有成功野心的高中生,要怎么填报高考志愿?为什么十年寒窗苦读,许多孩子上了大学后,开始不愿学习,进而毕业即失业?大多数大学开始混的孩子,都是志愿填报惹的祸!中国很多家庭都是这样,高考分数出来后的某一晚,在饭……老人带娃到底靠不靠谱?这个5岁小男孩,用事实证明没问题2020年一开年,大家就被一个小萌娃圈粉了。第五季《中国诗词大会》中,来自青岛的5岁萌娃王恒屹,对答如流、台风稳健,一夜之间成为大家口中的神童、别人家的孩子。其实这已经不……百年颂党史天天读10月24日重要论述1950年10月24日周恩来在政协全国第一届委员会常委会第十八次会议上作《抗美援朝,保卫和平》的报告。报告指出:朝鲜问题是一个国际问题,只有朝鲜胜利了,和平……
梳头发贩子遇见对手,卖发女孩妈妈紧攥头根不肯松手在日常生活中,我们偶尔会看到有人串街走巷吆喝着收头发,收头发辫子。很多人不明白收头发的小贩,他们收到头发以后拿去做什么。几年前,我看到收头发的小贩时很纳闷,不知他们……送孩子上幼儿园,我在家哭了一天孩子入园,父母焦虑怎么办?大家好,我是布谷妈。孩子进入3岁以后,大部分家长都会将他送入幼儿园。除了父母没有过多的时间和精力照顾外,孩子在这个年龄,也已经有了发展社交的需要。他需要融入到小朋友中,跟……上海精卫方贻儒抑郁症不是感冒,不是癌症,可有效治疗的(下)方贻儒教授是上海市精神卫生中心(即上海交通大学医学院附属精神卫生中心)心境障碍科主任、上海交通大学医学院精神卫生学系副主任、国家临床重点专科学科带头人。昨天,我们分享了方……吃完紧急避孕药,多久可以再次备孕?情到浓时,为爱鼓掌是一件很正常的事情,但是如果还没有想好接受新生命的话,一定要做好事前防范措施。可有的人就会说了,没关系那不是还有事后万能补救办法紧急避孕药吗?虽然避孕药可以作……我的孩子,普通却自信就挺好2020年下半年,那么普通却那么自信的梗从一档脱口秀综艺火遍全网,在许多人看来,这样的标签着实带有几分讽刺意味,揭露出个人能力与认知状态不匹配下的后果,带有几分调侃的意味。……六种全新的视角和表达方式来看待孩子孩子是父母的一面镜子,父母其实在孩子心里也是自己的一面镜子。他对父母的看法深信不疑。父母如何正确地看待孩子至关重要。下面我分享一下六种全新的视角来看待孩子:1,寻找机会让……学前班迎来整改,教育部门下发新规,家长表示有话要说俗话说三岁看老,它简单明了地去概括了一个幼儿心理发展的一般规律,从三岁的孩子心理特点,个性倾向,就能够看到这个孩子在青少年时期的心理和个性的形象出现,所以幼儿时期的教育尤为重要……妈妈扮成大黄鸭接孩子放学,网友脑洞大开我有个大胆的想法本文由老苗手打原创,拒绝侵权抄袭转载。随着孩子开始踏入幼儿园校门,难免会有些不太适应,会出现分离焦虑,而近期一位家长的解决方式让人忍俊不禁。为哄女儿开心,宝妈打扮成大黄鸭……儿童电话免费送,山东移动超值福利派送中我的孩子不见了,对于家长来说这是最可怕的一句话,仅是想想就足以让他们感到惊慌失措。孩子是父母的心头肉,也是汇聚全家人感情的宝贝,一旦发生意外,对一个家庭来说是致命的打击。而在科……山东50岁大爷翻跟头给岳母拜年摔倒,接下来的一幕更暖心本地达人计划拜年是我国的一种传统习俗,度过除夕之夜,就是新年的开始,在新年开始的头几天里,见到亲朋好友相互问候,是一种礼貌,也是一种祝福。给长辈们拜年的时候,要双手……能功成名就的孩子,不是最高分的,而是父母重点培养这三个方面的在父母心目中,都盼望着孩子能够成为人中龙凤,能够未来功成名就,成为事业成功的人,可是,能够功成名就的孩子,并不是最会考试的,而是父母培养过这三方面品德的孩子!01鼓励孩子……为了避免家里潮湿发霉有味道,分享一下居家防潮小妙招我们都知道室内湿度太高的话,是会对身体造成伤害的,让我们觉得浑身难受,如果室内比较潮湿的话,我们一定要找对方法解决,这样才能让我们居住在更舒适的环境中,当然房间湿度比较严重的话……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网