1. 程式人生 > >python+OpenCv+dlib實現人臉68個關鍵點檢測並標註

python+OpenCv+dlib實現人臉68個關鍵點檢測並標註

寒假跟著老師做科技部的專案,主要做微表情的檢測。剛開始一頭霧水,在研究了兩天之後,漸漸找到了一點感覺。 ——這裡主要實現了利用python3.6 + OpenCV + dlib 實現人臉68個關鍵點檢測並標註

  • python3.6下dlib的配置
  • 利用提供的訓練模型進行人臉檢測
  • 使用OpenCV進行標註

python3.6 下 dlib 的配置

dlib在python下的配置反反覆覆一直在折騰,一會說編碼錯誤,一會又查資料說需要安裝編譯boost和Cmake等其他軟體環境。反覆查詢資料後,這裡給出一種簡單快速地安裝方法,不需要安裝編譯boost和Cmake等其他軟體環境。

對應Anaconda的安裝在這裡不是重點,就不多說了。沒有安裝過的可以去找度娘。

第一步

使用Anaconda建立一個Python版本為3.6的Python環境。

建立python環境

第二步

在終端中開啟環境。

開啟終端

第三步

輸入:

pip install dlib==19.7.0

注意:直接輸入安裝dlib可能會出錯,因為可能最新版無whl格式的安裝包,所以建議安裝19.7.0版本,可以跳過安裝boost和Cmake。

等待安裝成功!

人臉檢測 + 標註

利用Dlib官方訓練好的模型“shape_predictor_68_face_landmarks.dat”

進行68點標定,利用OpenCv進行影象化處理,在人臉上畫出68個點,並標明序號;

實現的68個特徵點標定功能如下圖所示:

功能圖

設計流程

工作內容主要以下兩大塊:68點標定OpenCv繪點

68點標定:

藉助官方的訓練模型實現;

OpenCv繪點:

介紹了用到的 畫圓函式cv2.circle() 和 輸出字串函式 cv2.putText() ;

流程:

  1. 呼叫dlib庫來進行人臉識別,呼叫預測器“shape_predictor_68_face_landmarks.dat”進行68點標定
  2. 存入68個點座標
  3. 利用 cv2.circle

來畫68個點
  4. 利用 cv2.putText() 函式來畫數字1-68

程式展示

# _*_ coding:utf-8 _*_

import numpy as np
import cv2
import dlib

detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')

# cv2讀取影象
img = cv2.imread("1.jpg")

# 取灰度
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

# 人臉數rects
rects = detector(img_gray, 0)
for i in range(len(rects)):
    landmarks = np.matrix([[p.x, p.y] for p in predictor(img,rects[i]).parts()])
    for idx, point in enumerate(landmarks):
        # 68點的座標
        pos = (point[0, 0], point[0, 1])
        print(idx,pos)

        # 利用cv2.circle給每個特徵點畫一個圈,共68個
        cv2.circle(img, pos, 5, color=(0, 255, 0))
        # 利用cv2.putText輸出1-68
        font = cv2.FONT_HERSHEY_SIMPLEX
        cv2.putText(img, str(idx+1), pos, font, 0.8, (0, 0, 255), 1,cv2.LINE_AA)

cv2.namedWindow("img", 2)
cv2.imshow("img", img)
cv2.waitKey(0)

結果展示

原圖-迪麗熱巴

結果展示

作者 @culeao
2018 年 02月 08日

相關推薦

python+OpenCv+dlib實現人臉68關鍵點檢測標註

寒假跟著老師做科技部的專案,主要做微表情的檢測。剛開始一頭霧水,在研究了兩天之後,漸漸找到了一點感覺。 ——這裡主要實現了利用python3.6 + OpenCV + dlib 實現人臉68個關鍵點檢測並標註 。 python3.6下dlib的

Python】使用openCVdlib實現人臉68特徵點的檢測與手動修改

在使用plib檢測人臉特徵點的過程中由於各種原因難免會遇到特徵點定位不準確的情況。這時,如果能夠手動修改來移動特徵點的位置,後續工作則可以更好地得以完成。 由於openCV的畫圖工具會覆蓋原來的圖片,這裡我通過手動儲存被修改畫素的辦法實現移動定位點而不損害原來

25 行 Python 代碼實現人臉識別——OpenCV 技術教程

col print 連續 等等 cas 處理 get 命令行參數 性能 OpenCV OpenCV 是最流行的計算機視覺庫,原本用 C 和 C++ 開發,現在也支持 Python。 它使用機器學習算法在圖像中搜索人的面部。對於人臉這麽復雜的東西,並沒有一個簡單的檢測能對是否

Python+DLib實現人臉替換

點選前往集智專欄閱讀原文 參考資料: https://matthewearl.github.io/2015/07/28/switching-eds-with-python/ 翻譯:小馬哥 編輯:船長 還記得嗎?去年冬天,在國外 AI 圈有個事情鬧得很火:知名論

Python+OpenCV實現檢測場景內是否有物體移動,進行人臉檢測抓拍

可以當個家庭安防用吧0.0 import cv2 import time save_path = './face/' face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_front

dlib實現人臉識別-python

所用工具 Anaconda 3——Python 3 Dlib scikit-image Dlib Dlib是基於現代C++的一個跨平臺通用的框架,作者非常勤奮,一直在保持更新。Dlib內容涵蓋機器學習、影象處理、數值演算法、資料壓縮等等

人工智能?使用Pythondlib進行人臉檢測

Python 初學人工智能; 本人從事Python以及近9年了,目前在向人工智能進軍,遇到不懂得可以騷擾我:154.7251666,Q記著,別加錯了,想學Python的可以來問我學習方法,想要源代碼的也可以滴滴我“Dlib是一個現代化的C ++工具包,包含用於創建復雜軟件的機器學習算法和工具”。它使您

python三步實現人臉識別

輸出 但是 使用 window img 軟件包 更多 red iss 原文地址https://www.toutiao.com/a6475797999176417550 Face Recognition軟件包 這是世界上最簡單的人臉識別庫了。你可以通過Python引用或者命令

Python+OpenCV+mss實現區域網跨平臺桌面演示

整體思路 server.py:用mss截圖,然後zlib壓縮後socket傳送 client:socket接收,zlib解壓縮,然後使用OpenCV播放 簡單介紹mss An ultra fast cross-platform multiple screenshots modul

python ubuntu dlib 5 -人臉識別打分

1.檢測並提取輸入圖片的人臉(座標) 2.對每張人臉質量進行評分 import sys import dlib detector = dlib.get_frontal_face_detector() win = dlib.image_window() for f in sys.ar

python ubuntu dlib 6- 人臉檢測畫出輪廓

對輸入圖片進行人臉檢測,畫出人臉輪廓 import sys import os import dlib import glob if len(sys.argv) != 3: print( "Give the path to the trained shape pre

基於python、face++實現人臉檢測人臉識別

face++做的人臉識別應該是我目前接觸到的效果最好的了。這家公司也是個獨角獸,專門做人臉識別這塊的,返回的照片的資訊很全,也好呼叫。不過只提供線上的,不提供離線sdk沒法做一些實時性的東西。 import requests from json import JSONDecoder import

dlib實現人臉識別(一)生成描述檔案和標籤檔案

#include <iostream> #include <dlib/dnn.h> #include <dlib/data_io.h> #include <dlib/image_processing.h> #include <dlib/gui

Python+opencv+pyaudio實現帶聲音螢幕錄製

文章目錄 聲音錄製 視訊錄製(無聲音) 錄製的音訊與視訊合成為帶聲音的視訊 基於個人的愛好和現實的需求,決定用Python做一個螢幕錄製的指令碼。因為要看一些加密的視訊,每次都要登入,特別麻煩,遂決定用自己寫的指令碼,將加密視訊的播放過程全程錄

Python+OpenCV實現RGB轉HSI

cv2.cvtColor函式封裝了各種顏色空間之間的轉換,唯獨沒有RGB與HSI之間的轉換,網上查來查去也只有C++或MATLAB版本的,自己要用到python裡,所以就寫寫python版本的。 HSI顏色模型是一個滿足計算機數字化顏色管理需要的高度抽象模

Python opencv實現與自己同框對話的視訊特效

做視訊特效時常用一種畫面拼接的手法,可以實現在一個場景中同一個人與自己同框做出不同動作的效果。 我們知道,從視訊到影象,從影象到畫素,這一層層深入下來,我們只要能操縱每一個畫素點的值,就可以實現任意想要的移花接木效果。 下面,來嘗試使用Python+opencv實現自己與

python OpenCV+dlib 實時進行面部標誌檢測(一)

面部區域的面部標誌索引在dlib內部實現的面部標誌性檢測器產生對映到特定面部結構的 68  (x,y)座標  。這些68點對映是通過在標記的iBUG 300-W資料集上訓練一個形狀預測器獲得的。下面我們可以看到這68個座標對映到的每一個:通過檢查影象,我們可以看到可以通過簡單

作業1#python用列表實現多用戶登錄,有三次機會

循環 HA 成功 NPU name 單用戶 登錄 [1] and 1 username = ["juebai","haha"] 2 password = [123,456] 3 count = 0 4 while count < 3: 5 _use

開源人臉106關鍵點 HyperLandmark-開源人臉106點關鍵點檢測SDK

https://github.com/zeusees/HyperLandmark github地址,高精度 https://github.com/lsy17096535/face-landmark github地址,低精度 原 Hy

HyperLandmark-開源人臉106點關鍵點檢測SDK,北京智雲檢視科技 HyperLandmark-開源人臉106點關鍵點檢測SDK

原 HyperLandmark-開源人臉106點關鍵點檢測SDK 2018年07月19日 15:25:44 lsy17096535 閱讀數:3260