欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

超詳細注釋之OpenCV dlib實現(xiàn)人臉采集

 更新時間:2021年09月09日 16:50:34   作者:程序媛一枚~  
這篇文章主要介紹了OpenCV dlib實現(xiàn)人臉采集,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

上一篇博客中,我們了解了什么是面部標志,以及如何使用dlib,OpenCV和Python檢測它們。利用dlib的HOG SVM的形狀預測器獲得面部ROI中面部區(qū)域的68個點(x,y)坐標。
這一篇博客中,將演示如何使用NumPy數組切片魔術來分別訪問每個面部部分并提取眼睛,眉毛,鼻子,嘴巴和下巴的特征。

1. 效果圖

先上一張檢測完的圖:

在這里插入圖片描述

也可以每一部分先標識出來:

在這里插入圖片描述

2. 原理

面部標志主要是: 口 右眉 左眉 右眼 左眼 鼻子 下顎線
這一節(jié)即提取這些部分;

在這里插入圖片描述

從圖中可以看到假設是以0為下標的數組:

嘴唇可以認為是: points [48, 68]. 內嘴唇:[60,68]
右眉毛 points [17, 22].
左眉毛 points [22, 27].
右眼 [36, 42].
左眼 [42, 48].
鼻子 [27, 35].
下頜 [0, 17].

已經知道下標,數組切片,并用不同的顏色來標識各個部位,imutils包,可以幫助我們更優(yōu)雅的寫代碼的包;已經有封裝好方法face_utils 。
嘴唇等是閉合區(qū)域,用閉合的凸包表示,下頜用線勾勒;

面部標志檢測返回結果是:68個(x,y)坐標:
(1)先轉為適合OpenCV處理的 Numpy array,
(2)數組切片,用不同的顏色標識不同的面部結構部分;

3. 源碼

# 安裝了dlib
# imutils 是最新的版本
# python detect_face_parts.py --shape-predictor shape_predictor_68_face_landmarks.dat --image images/girl.jpg

from imutils import face_utils
import numpy as np
import argparse
import imutils
import dlib
import cv2
import shutil
import os

# 構建命令行參數
# --shape-predictor 必須 形狀檢測器位置
# --image 必須 待檢測的圖片
ap = argparse.ArgumentParser()
ap.add_argument("-p", "--shape-predictor", required=True,
                help="path to facial landmark predictor")
ap.add_argument("-i", "--image", required=True,
                help="path to input image")
args = vars(ap.parse_args())

temp_dir = "temp"
shutil.rmtree(temp_dir, ignore_errors=True)
os.makedirs(temp_dir)

# 初始化dlib中基于HOG的面部檢測器,及形狀預測器
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor(args["shape_predictor"])

# 加載待檢測的圖片,resize,并且裝換為灰度圖
image = cv2.imread(args["image"])
image = imutils.resize(image, width=500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 在灰度圖中檢測面部
rects = detector(gray, 1)

# 循環(huán)檢測到的面部
num = 0
for (i, rect) in enumerate(rects):
    # 確定面部區(qū)域進行面部標志檢測,并將其檢測到的68個點轉換為方便python處理的Numpy array
    shape = predictor(gray, rect)
    shape = face_utils.shape_to_np(shape)

    # 循環(huán)遍歷面部標志獨立的每一部分
    for (name, (i, j)) in face_utils.FACIAL_LANDMARKS_IDXS.items():

        # 復制一張原始圖的拷貝,以便于繪制面部區(qū)域,及其名稱
        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), 1, (0, 0, 255), -1)
            # 要實際提取每個面部區(qū)域,我們只需要計算與特定區(qū)域關聯(lián)的(x,y)坐標的邊界框,并使用NumPy數組切片來提取它:
            (x, y, w, h) = cv2.boundingRect(np.array([shape[i:j]]))
            roi = image[y:y + h, x:x + w]

            # resize ROI區(qū)域為 寬度250,以便于更好的可視化
            roi = imutils.resize(roi, width=250, inter=cv2.INTER_CUBIC)

            # 展示獨立的面部標志
            cv2.imshow("ROI", roi)
            cv2.imshow("Image", clone)
            cv2.waitKey(0)

        num = num + 1
        p = os.path.sep.join([temp_dir, "{}.jpg".format(
            str(num).zfill(8))])
        print('p: ', p)
        cv2.imwrite(p, output)

    # 應用visualize_facial_landmarks 功能為每個面部部位創(chuàng)建透明的覆蓋層。(transparent overlay)
    output = face_utils.visualize_facial_landmarks(image, shape)
    cv2.imshow("Image", output)
    cv2.waitKey(0)

參考

https://www.pyimagesearch.com/2017/04/10/detect-eyes-nose-lips-jaw-dlib-opencv-python/

到此這篇關于超詳細注釋之OpenCV dlib實現(xiàn)人臉采集的文章就介紹到這了,更多相關OpenCV 人臉采集內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python rabbitMQ如何實現(xiàn)生產消費者模式

    Python rabbitMQ如何實現(xiàn)生產消費者模式

    這篇文章主要介紹了Python rabbitMQ如何實現(xiàn)生產消費者模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Python遠程控制Windows服務器的方法總結

    Python遠程控制Windows服務器的方法總結

    在信息時代的洪流中,掌握一門編程語言已經成為一項必備技能,Python,這門以簡潔、易學、強大著稱的編程語言,更是成為無數開發(fā)者的大寶劍,今天,我們要探討的就是如何用 Python 遠程控制 Windows 服務器,需要的朋友可以參考下
    2024-07-07
  • python利用后綴表達式實現(xiàn)計算器功能

    python利用后綴表達式實現(xiàn)計算器功能

    這篇文章主要為大家詳細介紹了python利用后綴表達式實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • python-itchat 統(tǒng)計微信群、好友數量,及原始消息數據的實例

    python-itchat 統(tǒng)計微信群、好友數量,及原始消息數據的實例

    今天小編就為大家分享一篇python-itchat 統(tǒng)計微信群、好友數量,及原始消息數據的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python用pdfplumber提取pdf表格數據并保存到excel文件中

    python用pdfplumber提取pdf表格數據并保存到excel文件中

    在實際研究中我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現(xiàn),如公司年報、發(fā)行上市公告等,下面這篇文章主要給大家介紹了關于利用python提取pdf表格數據并保存到excel文件中的相關資料,需要的朋友可以參考下
    2022-07-07
  • Python實現(xiàn)基本Socket服務端與客戶端通信的完整代碼

    Python實現(xiàn)基本Socket服務端與客戶端通信的完整代碼

    這篇文章主要介紹了Python實現(xiàn)基本Socket服務端與客戶端通信,分步詳解與完整代碼都有,按需所求即可,對Python Socket服務端與客戶端通信相關知識感興趣的朋友一起看看吧
    2023-06-06
  • python如何設置靜態(tài)變量

    python如何設置靜態(tài)變量

    在本篇內容里小編給大家整理的是一篇關于python如何設置靜態(tài)變量的相關文章,有興趣的朋友們可以參考下。
    2020-09-09
  • sublime3之內網安裝python插件Anaconda的流程

    sublime3之內網安裝python插件Anaconda的流程

    這篇文章主要介紹了sublime3之內網安裝python插件Anaconda的流程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Python進程Multiprocessing模塊原理解析

    Python進程Multiprocessing模塊原理解析

    這篇文章主要介紹了Python進程Multiprocessing模塊原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • python Tcp協(xié)議發(fā)送和接收信息的例子

    python Tcp協(xié)議發(fā)送和接收信息的例子

    今天小編就為大家分享一篇python Tcp協(xié)議發(fā)送和接收信息的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評論