一、基于openCV人脸检测

1、代码

import cv2

def detect(filename):

face_cascade=cv2.CascadeClassifier('C:\\Users\\19013\\anaconda3\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_default.xml')

img=cv2.imread(filename)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray, 1.3, 5)

for(x, y, w, h) in faces:

img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

cv2.imshow('Person Detected!', img)

cv2.waitKey(0)

cv2.destroyAllWindows()

if __name__ == '__main__':

detect('C:\\Users\\19013\\Desktop\\person.jpg')

2、问题解决

    首先是安装包问题,我的电脑上有两个python,anaconda里是一个,而pip install默认下载在电脑内的python里,所以最后手动把opencv的包复制过去了(后面觉得太麻烦了于是选择用pycharm来做剩下的内容。

遇到了以下报错:

这个错误百度上都回答的是numpy版本过低,更新很多次numpy还是报错。最后发现是opencv的版本依赖问题,即numpy版本与opencv的版本匹配不上。

解决方法:

查看opencv的版本为'4.5.5’,重新下载numpy对应版本(降级,并不一定是升级,需要小于等于特定版本的numpy)

3、运行结果

二、基于基于Dlib+fr人脸检测

1、代码

import face_recognition
import cv2
#加载图像⽂件(.jpg,.png等),返回的数据是Numpy数组,记录了图⽚的所有像素的特征向量
image = face_recognition.load_image_file("C:\\Users\\19013\\Desktop\\person.jpg")
#定位图中所有的⼈脸的像素位置,返回值为列表形式,列表中每⼀⾏是⼀张⼈脸的位置信息,包括【top, right, bottom, left】 这是⼀组元组。
face_locations_noCNN=face_recognition.face_locations(image)
# face_locations_useCNN =face_recognition.face_locations(image,model='cnn')
# A list of tuples of found face locations in css (top, right, bottom,left) order
# 因为返回值的顺序是这样⼦的,因此在后⾯的for循环⾥⾯赋值要注意按这个顺序来
print("face_location_noCNN:")
print(face_locations_noCNN)
face_num2=len(face_locations_noCNN)
print(face_num2)       # The number of faces
# 到这⾥为⽌,可以观察两种情况的坐标和⼈脸数,⼀般来说,坐标会不⼀样,但是检测出来的⼈脸数应该是⼀样的
# 也就是说face_num1 = face_num2; face_locations_useCNN 和face_locations_noCNN 不⼀样
org = cv2.imread("C:\\Users\\19013\\Desktop\\person.jpg")
img = cv2.imread("C:\\Users\\19013\\Desktop\\person.jpg")
cv2.imshow("C:\\Users\\19013\\Desktop\\person.jpg",img) # 原始图⽚
for i in range(0,face_num2):
   top = face_locations_noCNN[i][0]
   right = face_locations_noCNN[i][1]
   bottom = face_locations_noCNN[i][2]
   left = face_locations_noCNN[i][3]
   start = (left, top)
   end = (right, bottom)
   color = (0,255,255)
   thickness = 2
   #参数:图⽚,⻓⽅形框左上⻆坐标, ⻓⽅形框右下⻆坐标, 字体颜⾊,字体粗细)
   cv2.rectangle(org, start, end, color, thickness)
cv2.imshow("no cnn ",org)
cv2.waitKey(0)
cv2.destroyAllWindows()

2、问题解决

这块内容没有遇到大问题,使用pycharm安装API十分方便。

3、运行结果

三、基于Dlib人脸对齐

1、代码

import cv2import dlibpath = "C:\\Users\\19013\\Desktop\\person.jpg"#读取图⽚img = cv2.imread(path)#灰度化处理gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#获得脸部位置检测器detector = dlib.get_frontal_face_detector()# 初步⼈脸检测,框出矩形。返回值是<class 'dlib.dlib.rectangle'>,即⼀个矩形,表示为能够唯⼀表示这个⼈脸矩形框两个点坐标:左上⻆(x1,y1)、右下⻆(x2,y2dets = detector(gray, 1)# 使⽤模型构建特征提取器,返回5/68个特征点的位置#此处路径是⾃⼰的python路径下site-packages位置predictor =dlib.shape_predictor(r"C:\\Users\\19013\\PycharmProjects\\pythonProject\\venv\\Lib\\site-packages\\shape_predictor_68_face_landmarks.dat")for face in dets:shape = predictor(img, face) # 寻找⼈脸的68个标定点# 遍历所有点,打印出其坐标,并圈出来#shape.parts() 类型为_dlib_pybind11.points,可返回检测到的关键点的位置坐标for pt in shape.parts():pt_pos = (pt.x, pt.y)#参数:图⽚,圆⼼, 半径, 字体颜⾊,字体粗细)cv2.circle(img, pt_pos, 2, (0, 255, 0), 1)cv2.imshow("image", img)cv2.waitKey(0)cv2.destroyAllWindows()

2、问题解决

遇到以下报错:

Unable to open C:\Users\19013\PycharmProjects\pythonProject\venv\Lib\site-packages\shape_predictor_68_face_landmarks.dat

其实是文件放进了和site-package文件夹同一阶级的文件夹内,应该放进去。(并且还需要解压、、)

解决方法:

3、运行截图

yy‘s图像人脸识别作业经历相关推荐

  1. OpenCV图像人脸识别人数统计

    Python+OpenCV图像人脸识别人数统计 如需远程调试,可加QQ905733049由专业技术人员远程协助! 运行代码如下: #!/usr/bin/python # -*- coding: utf ...

  2. 树莓派/图像/人脸识别

    培训总结 这是我第二写的博客文章,也是培训以来收获较大的一次,下面我来简单的总结一下这次培训的收获,我们上一期从51入手到现在学习树莓派,虚拟机,人脸识别和Python,Linux的一些命令大全 等简 ...

  3. php 人像识别,基于OpenCV的PHP图像人脸识别技术

    本文所介绍的技术不是原创,而是从一个叫Robert Eisele的德国人那里学习来的.他写了一个PHP扩展openCV,只封装了两个函数,叫face_detect和face_count. openCV ...

  4. 04.卷积神经网络 W4.特殊应用:人脸识别和神经风格转换(作业:快乐屋人脸识别+图片风格转换)

    文章目录 作业1:快乐房子 - 人脸识别 0. 朴素人脸验证 1. 编码人脸图片 1.1 使用卷积网络编码 1.2 Triplet 损失 2. 加载训练过的模型 3. 使用模型 3.1 人脸验证 3. ...

  5. 程序员用「美貌」突破二维图像的人脸识别

    GitChat 作者:于航 原文: 如何利用"女装术"突破基于二维图像的人脸识别 关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 [不要错过文末彩蛋] 首先声明,这 ...

  6. JavaCV进阶opencv图像检测识别:摄像头图像人脸检测

    JavaCV免费教程目录: JavaCV入门教程(免费JavaCV教程) javacv实战专栏目录(2016年更新至今): JavaCV实战专栏文章目录(2016年更新至今) 2022年最新JavaC ...

  7. 安卓 图像清晰度识别_最新人脸识别技术方案

    这两年,随着科技的迅速发展,人脸识别已经逐渐成为了新时期生物识别技术应用的重要领域,忘记密码了?没事儿,咱还可以"刷脸"!今天,小编将带大家了解一下最新的人脸识别技术,看看这项技术 ...

  8. 一文看懂人脸识别(4个特点+4个实现步骤+5个难点+算法发展轨迹)

    2020-03-09 20:01:00 人脸识别是身份识别的一种方式,目的就是要判断图片和视频中人脸的身份时什么. 本文将详细介绍人脸识别的4个特点.4个步骤.5个难点及算法的发展轨迹. 什么是人脸识 ...

  9. 《战狼2》中人脸识别无人机表现不俗,军、警用果真如此高能?

    "非洲某国战乱,战火蔓至海外华人,雇佣兵辣手残杀普通平民,在此危急时刻,前解放军特种兵冷锋挺身而出单刀赴会,中国海军舰队临危上线奔袭掩护-.."前不久上映的军事动作电影<战狼 ...

最新文章

  1. The FBX plug-in does not support objects set to By Object mode in the Object Properties Display
  2. 介绍一个.Net资源站点
  3. python not is函数_python操作符,没有操作符“not in”怎么处理?
  4. 八卦一下 惠普曾是Oracle的练爱对象
  5. 热模块替换html,热模块替换启用,但不能正常工作http:// localhost:3000/__ webpack_hmr...
  6. AspNet Core 下利用普罗米修斯+Grafana构建Metrics和服务器性能的监控
  7. python 笔记 之 线程锁
  8. mfc之ListControl控件的使用
  9. linux系统启动后卡在笑脸符号,【转】Linux中的特殊符号
  10. 瓜子二手车:急招IoT架构师,相当阿里P9
  11. 职业技能鉴定准考证打印系统
  12. 华为手机隐藏app图标_华为手机怎么隐藏应用图标
  13. 蓝牙 - 被高通收购的CSR的一颗蓝牙芯片
  14. 表单获取焦点和失去焦点
  15. 北京汇佳IB大考成绩公布
  16. web展示爬去知乎、微博文章和图片
  17. Win10系统更新卡住了怎么办?如何修复?
  18. c#实现任务栏气泡提醒
  19. 客户成功团队的 OKR 案例
  20. CTE表--SQLSERVER2005看得见的性能提升

热门文章

  1. 时下世界上最先进的液晶面板技术---ips
  2. HTML下拉菜单为什么是灰的,CSS实现的灰色下拉菜单效果代码
  3. 程序员自学理财1~理财启蒙《小狗钱钱》学习笔记
  4. 比996更可怕的是,996式戏精
  5. vue2.0 + router 3. 0 动态添加路由
  6. mysql锁表的解决
  7. 轻松认识请求转发(forward)和请求重定向(Redirect)
  8. U盘无法格式化?试试这几种快速有效的方法!
  9. 前端笔记-使用CSS为前端界面设置背景底纹
  10. 可以绕过 Windows UAC 吗