




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Python实战之基于OpenCV的美颜挂件制作#用于人脸和鼻子检测的级联分类器
face_cascade=cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
nose_cascade=cv2.CascadeClassifier("haarcascade_mcs_nose.xml")
#加载胡子图像
img_moustache=cv2.imread('moustache.png',-1)
#创建胡子蒙版
img_moustache_mask=img_moustache[:,:,3]
#将胡子图像转换为BGR图像
img_moustache=img_moustache[:,:,0:3]
#创建VideoCapture对象
video_capture=cv2.VideoCapture(0)
whileTrue:
#从VideoCapture对象捕获帧
ret,frame=video_capture.read()
#将frame转换为灰度图像
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
#检测人脸
faces=face_cascade.detectMultiScale(gray,1.3,5)
#迭代检测到的人脸
for(x,y,w,h)infaces:
#根据检测到的人脸大小创建ROI
roi_gray=gray[y:y+h,x:x+w]
roi_color=frame[y:y+h,x:x+w]
#在检测到的人脸中检测鼻子
noses=nose_cascade.detectMultiScale(roi_gray)
for(nx,ny,nw,nh)innoses:
#计算将放置“胡子”挂件的坐标
x1=int(nx-nw/2)
x2=int(nx+nw/2+nw)
y1=int(ny+nh/2+nh/8)
y2=int(ny+nh+nh/4+nh/6)
ifx10orx20orx2wory2h:
continue
#计算“胡子”挂件区域的尺寸
img_moustache_res_width=int(x2-x1)
img_moustache_res_height=int(y2-y1)
#根据挂件区域缩放“胡子”蒙版
mask=cv2.resize(img_moustache_mask,(img_moustache_res_width,img_moustache_res_height))
#翻转蒙版
mask_inv=cv2.bitwise_not(mask)
#缩放“胡子”挂件
img=cv2.resize(img_moustache,(img_moustache_res_width,img_moustache_res_height))
#从原始图像中获取ROI
roi=roi_color[y1:y2,x1:x2]
#创建ROI前景和背景
roi_bakground=cv2.bitwise_and(roi,roi,mask=mask_inv)
roi_foreground=cv2.bitwise_and(img,img,mask=mask)
#roi_bakground与roi_foreground加和获取结果
res=cv2.add(roi_bakground,roi_foreground)
roi_color[y1:y2,x1:x2]=res
break
#显示结果
cv2.imshow('Snapchat-basedOpenCVmoustacheoverlay',frame)
#按下“q”键退出
ifcv2.waitKey(1)0xFF==ord('q'):
break
#释放资源
video_capture.release()
cv2.destroyAllWindows()
眼镜挂件融合
在这一实战程序中,我们将学习在检测到的面部眼睛区域上融合眼镜挂件。我们通过下图首次查看程序预期结果:
同样为了实现眼镜挂件融合,需要首先使用眼睛检测器检测图像中的眼睛:
eyepair_cascade=cv2.CascadeClassifier("haarcascade_mcs_eyepair_big.xml")
上图中青色矩形表示检测到的人脸在图像中的位置和大小;粉红色矩形表示图像中检测到的眼睛;黄色矩形表示眼镜将被覆盖的位置,其根据眼睛所在区域的位置和大小进行计算。
同时,为融合的眼镜眼镜挂件图像增加一些透明度,以使它们更逼真,眼镜图像蒙版如下所示:
融合后的结果图像如下图所示:
基本代码与上例相同,因此不再进行赘述,需要注意的是“眼镜”挂件的融合区域计算。
importcv2
face_cascade=cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
eyepair_cascade=cv2.CascadeClassifier("haarcascade_mcs_eyepair_big.xml")
img_glasses=cv2.imread('glasses.png',-1)
img_glasses_mask=img_glasses[:,:,3]
img_glasses=img_glasses[:,:,0:3]
video_capture=cv2.VideoCapture(0)
whileTrue:
ret,frame=video_capture.read()
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
#检测人脸
faces=face_cascade.detectMultiScale(gray,1.3,5)
for(x,y,w,h)infaces:
roi_gray=gray[y:y+h,x:x+w]
roi_color=frame[y:y+h,x:x+w]
#在检测到的人脸中检测眼睛
eyepairs=eyepair_cascade.detectMultiScale(roi_gray)
for(ex,ey,ew,eh)ineyepairs:
#计算“眼睛”挂件放置的坐标
x1=int(ex-ew/10)
x2=int((ex+ew)+ew/10)
y1=int(ey)
y2=int(e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版房屋过户与房屋结构安全评估合同示范
- 2025年食品检验工(高级)考试试卷:食品检验报告编制规范与审核流程
- 二零二五年度担保余值会计处理流程优化合同
- 二零二五版轨道交通机电安装工程挂靠服务协议书
- 2025版房地产估价机构与开发商合作合同
- 2025年有色金属行业资源循环利用产业链产业链协同创新与产业链竞争力提升策略报告
- 2025年银行业零售业务数字化营销转型与竞争态势分析报告
- 高三语文教学课件下载
- 工业互联网平台微服务架构性能测试报告2025:跨平台兼容性与优化
- 2025年高校产学研合作中智能交通云计算平台技术转移与成果转化报告
- 汽车更换发动机合同协议
- 广东省省实、二中、执信、广雅、六中2024-2025学年高一下期末联考语文试题及答案
- 生物医药研发股东风险共担协议书
- 出口管制介绍课件
- 兰州噪音污染管理办法
- 2025 创伤救护四大技术(止血 包扎 固定 搬运)课件
- 艾梅乙信息安全管理制度
- 2025年武汉市汉阳区社区干事岗位招聘考试笔试试题(含答案)
- 氢气安全使用技术规程
- (高清版)DB34∕T 5013-2025 工程建设项目招标代理规程
- 城市环卫车辆维护保养计划
评论
0/150
提交评论