当前位置: 首页 > news >正文

合肥企业网站建设工wordpress logo底色

合肥企业网站建设工,wordpress logo底色,河南省建设工程标准定额管理网站,大约多少钱目录 前言 识别检测方法 本文方法 项目解析 完整代码及效果展示 前言 人脸识别作为一种生物特征识别技术#xff0c;具有非侵扰性、非接触性、友好性和便捷性等优点。人脸识别通用的流程主要包括人脸检测、人脸裁剪、人脸校正、特征提取和人脸识别。人脸检测是从获取的图…目录 前言 识别检测方法 本文方法 项目解析 完整代码及效果展示 前言 人脸识别作为一种生物特征识别技术具有非侵扰性、非接触性、友好性和便捷性等优点。人脸识别通用的流程主要包括人脸检测、人脸裁剪、人脸校正、特征提取和人脸识别。人脸检测是从获取的图像中去除干扰提取人脸信息获取人脸图像位置检测的成功率主要受图像质量光线强弱和遮挡等因素影响。下图是整个人脸检测过程。   识别检测方法 传统识别方法 (1)基于点云数据的人脸识别 (2)基于面部特征的3D人脸识别 深度学习识别方法 (1)基于深度图的人脸识别 (2)基于RGB-3DMM的人脸识别 (3)基于RGB-D的人脸识别 本文方法 关键点定位概述 一般人脸中有5个关键点其中包括眼睛两个鼻子一个嘴角两个。还可以细致的分为68个关键点这样的话会概括的比较全面我们本次研究就是68个关键点定位。 上图就是我们定位人脸的68个关键点其中他的顺序是要严格的进行排序的。从1到68点的顺序不能错误。 项目解析 使用机器学习框架dlib做本次的项目。首先我们要指定参数时要把dlib中的68关键点人脸定位找到。设置出来的68关键点人脸定位找到。并且设置出来。 from collections import OrderedDict import numpy as np import argparse import dlib import cv2首先我们导入工具包。其中dlib库是通过这个网址http://dlib.net/files/进行下载的。然后我们导入参数。 ap argparse.ArgumentParser() ap.add_argument(-p, --shape-predictor, requiredTrue,helppath to facial landmark predictor) ap.add_argument(-i, --image, requiredTrue,helppath to input image) args vars(ap.parse_args())这里我们要设置参数 --shape-predictor shape_predictor_68_face_landmarks.dat --image images/lanqiudui.jpg。如果一张图像里面有多个人脸那么我们分不同部分进行检测裁剪出来所对应的ROI区域。我们的整体思路就是先检测人脸所在的一个区域位置然后检测鼻子相对于人脸框所在的一个位置比如说人的左眼睛在0.2w0.2h的人脸框处。   FACIAL_LANDMARKS_68_IDXS OrderedDict([(mouth, (48, 68)),(right_eyebrow, (17, 22)),(left_eyebrow, (22, 27)),(right_eye, (36, 42)),(left_eye, (42, 48)),(nose, (27, 36)),(jaw, (0, 17)) ])这个是68个关键点定位的各个部位相对于人脸框的所在位置。分别对应着嘴左眼、右眼、左眼眉、右眼眉、鼻子、下巴。 FACIAL_LANDMARKS_5_IDXS OrderedDict([(right_eye, (2, 3)),(left_eye, (0, 1)),(nose, (4)) ])如果是5点定位那么就需要定位左眼、右眼、鼻子。0、1、2、3、4分别表示对应的5个点。 detector dlib.get_frontal_face_detector() predictor dlib.shape_predictor(args[shape_predictor])加载人脸检测与关键点定位。加载出来。其中detector默认的人脸检测器。然后通过传入参数返回人脸检测矩形框4点坐标。其中predictor以图像的某块区域为输入输出一系列的点point location以表示此图像region里object的姿势pose。返回训练好的人脸68特征点检测器。   image cv2.imread(args[image]) (h, w) image.shape[:2] width500 r width / float(w) dim (width, int(h * r)) image cv2.resize(image, dim, interpolationcv2.INTER_AREA) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)这里我们把数据读了进来然后进行需处理提取h和w其中我们自己设定图像的w为500然后按照比例同比例设置h。然后进行了resize操作最后转化为灰度图。 rects detector(gray, 1)这里调用了detector的人脸框检测器要使用灰度图进行检测这个1是重采样个数。这里面返回的是人脸检测矩形框4点坐标。然后对检测框进行遍历 for (i, rect) in enumerate(rects):# 对人脸框进行关键点定位# 转换成ndarrayshape predictor(gray, rect)shape shape_to_np(shape)这里面返回68个关键点定位。shape_to_np这个函数如下。 def shape_to_np(shape, dtypeint):# 创建68*2coords np.zeros((shape.num_parts, 2), dtypedtype)# 遍历每一个关键点# 得到坐标for i in range(0, shape.num_parts):coords[i] (shape.part(i).x, shape.part(i).y)return coords这里shape_to_np函数的作用就是得到关键点定位的坐标。 for (name, (i, j)) in FACIAL_LANDMARKS_68_IDXS.items():clone image.copy()cv2.putText(clone, name, (10, 30), cv2.FONT_HERSHEY_SIMPLEX,0.7, (0, 0, 255), 2) # 根据位置画点for (x, y) in shape[i:j]:cv2.circle(clone, (x, y), 3, (0, 0, 255), -1)# 提取ROI区域(x, y, w, h) cv2.boundingRect(np.array([shape[i:j]]))roi image[y:y h, x:x w](h, w) roi.shape[:2]width250r width / float(w)dim (width, int(h * r))roi cv2.resize(roi, dim, interpolationcv2.INTER_AREA)# 显示每一部分cv2.imshow(ROI, roi)cv2.imshow(Image, clone)cv2.waitKey(0)这里字典FACIAL_LANDMARKS_68_IDXS.items()是同时提取字典中的key和value数值。然后遍历出来这几个区域并且进行显示具体是那个区域并且将这个区域画圆。随后提取roi区域并且进行显示。后面部分就是同比例显示w和h。然后展示出来。 output visualize_facial_landmarks(image, shape)cv2.imshow(Image, output)cv2.waitKey(0)最后展示所有区域。 其中visualize_facial_landmarks函数就是 def visualize_facial_landmarks(image, shape, colorsNone, alpha0.75):# 创建两个copy# overlay and one for the final output imageoverlay image.copy()output image.copy()# 设置一些颜色区域if colors is None:colors [(19, 199, 109), (79, 76, 240), (230, 159, 23),(168, 100, 168), (158, 163, 32),(163, 38, 32), (180, 42, 220)]# 遍历每一个区域for (i, name) in enumerate(FACIAL_LANDMARKS_68_IDXS.keys()):# 得到每一个点的坐标(j, k) FACIAL_LANDMARKS_68_IDXS[name]pts shape[j:k]# 检查位置if name jaw:# 用线条连起来for l in range(1, len(pts)):ptA tuple(pts[l - 1])ptB tuple(pts[l])cv2.line(overlay, ptA, ptB, colors[i], 2)# 计算凸包else:hull cv2.convexHull(pts)cv2.drawContours(overlay, [hull], -1, colors[i], -1)# 叠加在原图上可以指定比例cv2.addWeighted(overlay, alpha, output, 1 - alpha, 0, output)return output这个函数是计算cv2.convexHull凸包的也就是下图这个意思。 这个函数cv2.addWeighted是做图像叠加的。 src1, src2需要融合叠加的两副图像要求大小和通道数相等 alphasrc1 的权重 betasrc2 的权重 gammagamma 修正系数不需要修正设置为 0 dst可选参数输出结果保存的变量默认值为 None dtype可选参数输出图像数组的深度即图像单个像素值的位数如 RGB 用三个字节表示则为 24 位选默认值 None 表示与源图像保持一致。 dst src1 × alpha src2 × beta gamma;上面的式子理解为结果图像 图像 1× 系数 1图像 2× 系数 2亮度调节量。 完整代码及效果展示 from collections import OrderedDict import numpy as np import argparse import dlib import cv2ap argparse.ArgumentParser() ap.add_argument(-p, --shape-predictor, requiredTrue,helppath to facial landmark predictor) ap.add_argument(-i, --image, requiredTrue,helppath to input image) args vars(ap.parse_args())FACIAL_LANDMARKS_68_IDXS OrderedDict([(mouth, (48, 68)),(right_eyebrow, (17, 22)),(left_eyebrow, (22, 27)),(right_eye, (36, 42)),(left_eye, (42, 48)),(nose, (27, 36)),(jaw, (0, 17)) ])FACIAL_LANDMARKS_5_IDXS OrderedDict([(right_eye, (2, 3)),(left_eye, (0, 1)),(nose, (4)) ])def shape_to_np(shape, dtypeint):# 创建68*2coords np.zeros((shape.num_parts, 2), dtypedtype)# 遍历每一个关键点# 得到坐标for i in range(0, shape.num_parts):coords[i] (shape.part(i).x, shape.part(i).y)return coordsdef visualize_facial_landmarks(image, shape, colorsNone, alpha0.75):# 创建两个copy# overlay and one for the final output imageoverlay image.copy()output image.copy()# 设置一些颜色区域if colors is None:colors [(19, 199, 109), (79, 76, 240), (230, 159, 23),(168, 100, 168), (158, 163, 32),(163, 38, 32), (180, 42, 220)]# 遍历每一个区域for (i, name) in enumerate(FACIAL_LANDMARKS_68_IDXS.keys()):# 得到每一个点的坐标(j, k) FACIAL_LANDMARKS_68_IDXS[name]pts shape[j:k]# 检查位置if name jaw:# 用线条连起来for l in range(1, len(pts)):ptA tuple(pts[l - 1])ptB tuple(pts[l])cv2.line(overlay, ptA, ptB, colors[i], 2)# 计算凸包else:hull cv2.convexHull(pts)cv2.drawContours(overlay, [hull], -1, colors[i], -1)# 叠加在原图上可以指定比例cv2.addWeighted(overlay, alpha, output, 1 - alpha, 0, output)return output# 加载人脸检测与关键点定位 detector dlib.get_frontal_face_detector() predictor dlib.shape_predictor(args[shape_predictor])# 读取输入数据预处理 image cv2.imread(args[image]) (h, w) image.shape[:2] width500 r width / float(w) dim (width, int(h * r)) image cv2.resize(image, dim, interpolationcv2.INTER_AREA) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 人脸检测 rects detector(gray, 1)# 遍历检测到的框 for (i, rect) in enumerate(rects):# 对人脸框进行关键点定位# 转换成ndarrayshape predictor(gray, rect)shape shape_to_np(shape)# 遍历每一个部分for (name, (i, j)) in FACIAL_LANDMARKS_68_IDXS.items():clone image.copy()cv2.putText(clone, name, (10, 30), cv2.FONT_HERSHEY_SIMPLEX,0.7, (0, 0, 255), 2) # 根据位置画点for (x, y) in shape[i:j]:cv2.circle(clone, (x, y), 3, (0, 0, 255), -1)# 提取ROI区域(x, y, w, h) cv2.boundingRect(np.array([shape[i:j]]))roi image[y:y h, x:x w](h, w) roi.shape[:2]width250r width / float(w)dim (width, int(h * r))roi cv2.resize(roi, dim, interpolationcv2.INTER_AREA)# 显示每一部分cv2.imshow(ROI, roi)cv2.imshow(Image, clone)cv2.waitKey(0)# 展示所有区域output visualize_facial_landmarks(image, shape)cv2.imshow(Image, output)cv2.waitKey(0)最终将7个人的人脸都依次的检测到了。并且根据关键点定位到了。 如果觉得博主的文章还不错或者您用得到的话可以免费的关注一下博主如果三连收藏支持就更好啦这就是给予我最大的支持
http://www.dnsts.com.cn/news/240333.html

相关文章:

  • 建立一个网站如何开通账号手机网站自适应屏幕
  • 地坪漆东莞网站建设技术支持河北建设集团网站
  • 备案网站有哪些资料山西中宇建设集团网站
  • vc 做网站源码wordpress怎么恢复到原来版本
  • 用dw做音乐网站系统的代码单位网站备案
  • 南昌做网站开发的公司有哪些邢台手机网站制作
  • 开发app的网站嘉兴哪家公司做网站比较好的
  • 网站建设培训业务心得怎么建设一个手机网站
  • 建com网站免费扑克网站代码
  • 郑州锐途网站建设wordpress 视频弹窗
  • 世界顶尖名表瑞士网站不要中国手表网站个人主页文案
  • 网站建设开题报告ppt深圳宝安建设工程交易中心
  • 招代理的网站建设公司企业网站功能模块设计
  • 徐汇网站建设推广整合营销的特点有哪些
  • 扬州网站定制网络链接推广
  • 傻瓜式建站软件下载比特币做空网站
  • 做网站如何购买服务器吗品牌注册公司
  • 公司网站建设需求说明书如何制作游戏?
  • 南京快速建站公司etherna 简洁商业企业wordpress
  • 国内最最早做虚拟货币的网站响应式网站模板之家
  • 设置网站域名解析和网站主机绑定海淀区seo搜索优化
  • 做网批有专门的网站吗网站开发计算机配置
  • 专业做毕业设计网站设计什么是网络营销的核心竞争力
  • 分类网站怎么做seo58网站怎么做品牌推广
  • 资源网站建设做网站收费多少
  • 网监大队让网站备案做视频网站审核编辑有假么
  • 网站查询响应式布局需要注意什么
  • 25个经典网站源代码动漫网站开发
  • 凡科网和wordpress重庆seo培训
  • 上海微网站制作设计制作搜索引擎调价平台哪个好