我的编程空间,编程开发者的网络收藏夹
学习永远不晚

树莓派上如何利用python+opencv+dlib实现嘴唇检测

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

树莓派上如何利用python+opencv+dlib实现嘴唇检测

小编给大家分享一下树莓派上如何利用python+opencv+dlib实现嘴唇检测,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

树莓派上利用python+opencv+dlib实现嘴唇检测

项目的目标是在树莓派上运行python代码以实现嘴唇检测,本来以为树莓派的硬件是可以流畅运行实时检测的,但是实验的效果表明树莓派实时检测是不可行,后面还需要改进。

实验的效果如下:

树莓派上如何利用python+opencv+dlib实现嘴唇检测

1、安装相关库文件

这里需要用的库有opencv,numpy,dlib。

1 安装opencv

pip3 install opencv-python

2 安装numpy

树莓派中自带了numpy库

pip3 install numpy

3 安装dlib

在树莓派的系统里面安装dlib比较简单,只需要pip install就可以了,但是在window系统中会有报错,这个时候我们就需要安装pip install dlib-19.17.99-cp37-cp37m-win_amd64.whl就可以了, 需要注意的是: 不同的python版本要安装对应版本的dlib,也就是后面的“cp37-cp37m”,查看对应python能安装的版本号,可以使用命令行:pip debug --verbose,可以显示合适的安装版本号。
在树莓派上我安装了cmake和dlib

pip3 install cmakepip3 install dlib

2、代码部分

dlib提取人脸特征中包含68个点

树莓派上如何利用python+opencv+dlib实现嘴唇检测

颚点= 0–16
右眉点= 17–21
左眉点= 22–26
鼻点= 27–35
右眼点= 36–41
左眼点= 42–47
口角= 48–60
嘴唇分数= 61–67

from gpiozero import LEDfrom time import sleepfrom subprocess import check_callimport cv2import numpy as npimport dlibprint(cv2.__version__)def search_cap_num():    for i in range(2000):        cap = cv2.VideoCapture(i)        cap_opened = cap.isOpened()        if cap_opened == True:            return i        cap_num = search_cap_num()cap = cv2.VideoCapture(cap_num)detector = dlib.get_frontal_face_detector()predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")# 规定上嘴唇和下嘴唇连线的路径lip_order_dlib = np.array([[48, 49, 50, 51, 52, 53, 54, 64, 63, 62, 61, 60, 48],                           [48, 59, 58, 57, 56, 55, 54, 64, 65, 66, 67, 60, 48]]) - 48lip_order_num = lip_order_dlib.shape[1]while 1:    landmarks_lip = []    ret, frame = cap.read()    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)    rects = detector(gray, 1)    print('faces number:' + str(len(rects)))    for (i, rect) in enumerate(rects):        # 标记人脸中的68个landmark点        landmarks = predictor(gray, rect)          for n in range(48, 68):            x = landmarks.part(n).x            y = landmarks.part(n).y            landmarks_lip.append((x, y))            # cv2.circle(img=img, center=(x, y), radius=3, color=(0, 255, 0), thickness=-1)        for m in range(lip_order_num-1):            cv2.line(frame, landmarks_lip[lip_order_dlib[0][m]], landmarks_lip[lip_order_dlib[0][m+1]], color=(0, 255, 0), thickness=2, lineType=8)        for n in range(lip_order_num-1):            cv2.line(frame, landmarks_lip[lip_order_dlib[1][n]], landmarks_lip[lip_order_dlib[1][n+1]], color=(0, 255, 0), thickness=2, lineType=8)    cv2.imshow("face", frame)    if cv2.waitKey(1) & 0xff == ord('q'):        breakcap.release()cv2.destroyAllWindows()# check_call(['sudo', 'poweroff'])

3、实验效果

树莓派上如何利用python+opencv+dlib实现嘴唇检测

效果总体而言比较卡顿,感觉分析一张图片花费时间在秒量级上。
要是仅仅是显示摄像头的图片还是很快的,没有任何卡顿,也就是说如果代码中不存在rects = detector(gray, 1)这种获取人脸区域的检测命令,那么运行速度大大提高,后面需要思考怎么在人脸检测下提高代码运行速度。

看完了这篇文章,相信你对“树莓派上如何利用python+opencv+dlib实现嘴唇检测”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

树莓派上如何利用python+opencv+dlib实现嘴唇检测

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

树莓派上如何利用python+opencv+dlib实现嘴唇检测

小编给大家分享一下树莓派上如何利用python+opencv+dlib实现嘴唇检测,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!树莓派上利用python+opencv+dlib实现嘴唇检测项目的目标是在树莓派上运行pyth
2023-06-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录