安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Python摄像头换脸,现实版易容术重现江湖

5月1日 温柔冢投稿
  环境与效果python3。9。6pycharm2021
  库环境:dlibopencvpython
  视频图片效果如下:
  基本原理
  使用dlib的shapepredictor68facelandmarks。dat模型获取一张有正脸的图片(1。png)和摄像头的自己的68个人脸特征点。
  根据人脸特征点获取分别获取人脸掩模
  对第一个图片仿射变换使其脸部对准摄像头图片中的脸部得到新的图片
  对人脸掩模执行相同的操作仿射
  将两个性的得到图取并集(不能让别的地方空了)
  用opencv对两上面操作,对仿射变换后的a图片和摄像头图片进行泊松融合完整源码coding:utf8importcv2importdlibimportnumpyasnpdetectordlib。getfrontalfacedetector()dlib的正向人脸检测器predictordlib。shapepredictor(rshapepredictor68facelandmarks。dat)dlib的人脸形状检测器defgetimagesize(image):获取图片大小(高度,宽度):paramimage:image:return:(高度,宽度)imagesize(image。shape〔0〕,image。shape〔1〕)returnimagesizedefgetfacelandmarks(image,facedetector,shapepredictor):获取人脸标志,68个特征点:paramimage:image:paramfacedetector:dlib。getfrontalfacedetector:paramshapepredictor:dlib。shapepredictor:return:np。array(〔〔〕,〔〕〕),68个特征点detsfacedetector(image,1)shapeshapepredictor(image,dets〔0〕)facelandmarksnp。array(〔〔p。x,p。y〕forpinshape。parts()〕)returnfacelandmarksdefgetfacemask(imagesize,facelandmarks):获取人脸掩模:paramimagesize:图片大小:paramfacelandmarks:68个特征点:return:imagemask,掩模图片masknp。zeros(imagesize,dtypenp。uint8)pointsnp。concatenate(〔facelandmarks〔0:16〕,facelandmarks〔26:17:1〕〕)cv2。fillPoly(imgmask,pts〔points〕,color255)returnmaskdefgetaffineimage(image1,image2,facelandmarks1,facelandmarks2):获取图片1仿射变换后的图片:paramimage1:图片1,要进行仿射变换的图片:paramimage2:图片2,只要用来获取图片大小,生成与之大小相同的仿射变换图片:paramfacelandmarks1:图片1的人脸特征点:paramfacelandmarks2:图片2的人脸特征点:return:仿射变换后的图片threepointsindex〔18,8,25〕Mcv2。getAffineTransform(facelandmarks1〔threepointsindex〕。astype(np。float32),facelandmarks2〔threepointsindex〕。astype(np。float32))dsize(image2。shape〔1〕,image2。shape〔0〕)affineimagecv2。warpAffine(image1,M,dsize)returnaffineimage。astype(np。uint8)defgetmaskcenterpoint(imagemask):获取掩模的中心点坐标:paramimagemask:掩模图片:return:掩模中心imagemaskindexnp。argwhere(imagemask0)miny,minxnp。min(imagemaskindex,axis0)maxy,maxxnp。max(imagemaskindex,axis0)centerpoint((maxxminx)2,(maxyminy)2)returncenterpointdefgetmaskunion(mask1,mask2):获取两个掩模掩盖部分的并集:parammask1:maskimage,掩模1:parammask2:maskimage,掩模2:return:两个掩模掩盖部分的并集masknp。min(〔mask1,mask2〕,axis0)掩盖部分并集mask((cv2。blur(mask,(5,5))255)255)。astype(np。uint8)缩小掩模大小maskcv2。blur(mask,(3,3))。astype(np。uint8)模糊掩模returnmaskdefskincoloradjustment(im1,im2,maskNone):肤色调整:paramim1:图片1:paramim2:图片2:parammask:人脸mask。如果存在,使用人脸部分均值来求肤色变换系数;否则,使用高斯模糊来求肤色变换系数:return:根据图片2的颜色调整的图片1ifmaskisNone:im1ksize55im2ksize55im1factorcv2。GaussianBlur(im1,(im1ksize,im1ksize),0)。astype(np。float)im2factorcv2。GaussianBlur(im2,(im2ksize,im2ksize),0)。astype(np。float)else:im1faceimagecv2。bitwiseand(im1,im1,maskmask)im2faceimagecv2。bitwiseand(im2,im2,maskmask)im1factornp。mean(im1faceimage,axis(0,1))im2factornp。mean(im2faceimage,axis(0,1))im1np。clip((im1。astype(np。float)im2factornp。clip(im1factor,1e6,None)),0,255)。astype(np。uint8)returnim1defmain():im1cv2。imread(1。png)faceimageim1cv2。resize(im1,(600,im1。shape〔0〕600im1。shape〔1〕))landmarks1getfacelandmarks(im1,detector,predictor)68facelandmarksiflandmarks1isNone:print({}:检测不到人脸。format(imagefacepath))exit(1)im1sizegetimagesize(im1)脸图大小im1maskgetfacemask(im1size,landmarks1)脸图人脸掩模camcv2。VideoCapture(0)whileTrue:retval,im2cam。read()cameraimagelandmarks2getfacelandmarks(im2,detector,predictor)68facelandmarksiflandmarks2isnotNone:im2sizegetimagesize(im2)摄像头图片大小im2maskgetfacemask(im2size,landmarks2)摄像头图片人脸掩模affineim1getaffineimage(im1,im2,landmarks1,landmarks2)im1(脸图)仿射变换后的图片affineim1maskgetaffineimage(im1mask,im2,landmarks1,landmarks2)im1(脸图)仿射变换后的图片的人脸掩模unionmaskgetmaskunion(im2mask,affineim1mask)掩模合并affineim1skincoloradjustment(affineim1,im2,maskunionmask)肤色调整pointgetmaskcenterpoint(affineim1mask)im1(脸图)仿射变换后的图片的人脸掩模的中心点seamlessimcv2。seamlessClone(affineim1,im2,maskunionmask,ppoint,flagscv2。NORMALCLONE)进行泊松融合cv2。imshow(seamlessim,seamlessim)else:cv2。imshow(seamlessim,im2)ifcv2。waitKey(1)27:按Esc退出breakcv2。destroyAllWindows()ifnamemain:main()
  完整项目文件私信回复333,可直接分享
投诉 评论 转载

Python摄像头换脸,现实版易容术重现江湖环境与效果python3。9。6pycharm2021库环境:dlibopencvpython视频图片效果如下:基本原理使用dlib的shapepred……能不能分享你现在拥有的摄影器材?能不能分享你现在拥有的摄影器材?感谢你的邀请。但我不认为这是一个好问题,因为器材固然重要,但它毕竟是一个工具,如果不能拍出好照片,岂不成了器材党?!几年前,在爬山的……刘强东的喜和忧作者:老谢,财经作家在中国的互联网公司中,有把公司带入绝路的,比如ofo的戴威;有把行业带入绝路的,比如罗永浩老师。但在公司陷入困境后,又能开着飞机换引擎让公司重新飞起来……推荐几个应用让iPadPro完成RAW文件处理苹果去年10月底正式推出了全新的iPadPro,这也是iPad系产品线自诞生以来由外而内变化最大的一次升级,苹果将iPadPro的定位也从之前手机和电脑之间、具有娱乐功能的移动……盛夏严重潮湿影响生活质量科龙除湿王除湿有新招欧洲杯已经圆满落幕,在长时间凌晨三点熬夜看球之后,中国球迷们也开始以养生补眠,开启后欧洲杯时代。然而,7月盛夏小暑已至大暑接踵而来,除了高温预警但盛夏,潮湿严重影响我们的睡眠质……网上哪里能买到冷门却有趣的东西?话不多说,赶紧看图1、木叶盏桑叶烧成之后形成的叶脉。真的不是9。9包邮画上去的那种。2、缂丝扇非刺绣,是通经断纬织出来的。之前大表姐拿的那把扇子,就是缂……加码福利内容投入腾讯应用宝8周年生日派对正式开启9月25日至9月29日,腾讯应用宝正式开启8周年生日派对。用户可以在腾讯应用宝App进入活动页面,通过获取口令、下载指定App、邀请新用户三种方式获得抽奖机会,赢取丰厚奖品。……教育时评乡村教师如何走好智慧教育赶考路当下,智能时代对教师专业发展提出了新的目标要求,也提供了新的方法手段,特别是为乡村教师综合素养的提升带来了更为广阔的空间。然而,由于地域位置、经济条件和教育基础的不同,乡村学校……iPhone12值得购买的手机iPhone12比mini更大的屏幕体验和续航的加强。与iPhone12pro差了一个长焦镜头。还有不锈钢边框的区别。iPhone12的中框一样大的屏幕虽然官网说的……印度正考虑利用电力基础设施部署5G小型电池,以减少成本据www。rcrwireless。com5月20日报道,据印度媒体报道,印度电信部门(DoT)可能会使用电力分销商拥有的基础设施,在全国范围内部署5G小电池。图片来自:G……苹果手机怎么设置打开微信需要密码?微信现在是互联网常用的通信app之一。有时候,聊天记录不想删,但又不想让别人看到,怎么办?当然是给微信加上一个密码锁了。这样就能完美的将隐私信息保护起来。安卓手机设置中就……新闻之热点大事件今日头条新闻之:热点大事件【旷视、云从等集体回应被美拉黑:相关指控毫无事实根据】针对美国制裁,12月17日,旷视科技、云从科技、依图科技、立昂技术等公司均表示强烈反对,相……
OPPOK10Pro深度上手骁龙88880W快充,三星LCD面对人工智能时代最让你忧虑的是什么?还在纠结红米k50?44部骁龙865任你选被监控的打工人因算法裁定效率低下,近150名员工遭解雇程序员辞职回乡改行送菜奇瑞小蚂蚁敞篷版亮相,配硬顶敞篷,双拼色座椅,外观很运动Rust学习笔记(二十)String(下)9月17日前,必须完成!官方终决心捅破窗户纸比特币重回6万3,屎币套现,动物园崩盘,柴犬币SHIB暴跌原安卓动画制作传音新机在海外发布!内置7000mAh超大电池,外观很炫酷腾讯开源的企业级设计体系TDesign

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利