91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3怎么利用Dlib19.7實現人臉68個特征點標定

發布時間:2021-06-17 15:30:22 來源:億速云 閱讀:281 作者:小新 欄目:開發技術

小編給大家分享一下python3怎么利用Dlib19.7實現人臉68個特征點標定,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

0.引言

利用Dlib官方訓練好的模型“shape_predictor_68_face_landmarks.dat”進行68點標定,利用OpenCv進行圖像化處理,在人臉上畫出68個點,并標明序號;

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

python3怎么利用Dlib19.7實現人臉68個特征點標定

圖1 人臉68個特征點的標定 

1.開發環境

  python:3.6.3

  dlib:19.7

  OpenCv, numpy

需要調用的庫: 

import dlib #人臉識別的庫dlib
import numpy as np #數據處理的庫numpy
import cv2 #圖像處理的庫OpenCv

2.設計流程

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

68點標定:

借助官方的Demo(face_landmark_detection.py,在之前另一篇博客里面介紹過學習Python3 Dlib19.7進行人臉面部識別)實現;

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

3.源碼

# 68-points
# 2017-12-28
# By TimeStamp
# #cnblogs: http://www.cnblogs.com/AdaminXie/
import dlib      #人臉識別的庫dlib
import numpy as np    #數據處理的庫numpy
import cv2      #圖像處理的庫OpenCv

# dlib預測器
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')

path="********************"

# cv2讀取圖像
img=cv2.imread(path+"test.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])

  # 利用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)

note:OpenCv的畫圖函數

         1. 畫圓 cv2.circle( img, (p1,p2), r, (255,255,255) )

    參數1:  img-          圖片對象;

    參數2:  (p1,p2)-          圓心坐標;

    參數3:  r-          半徑;

    參數4:  (255,255,255)-  顏色數組;  

   2. 輸出字符 cv2.putText( img,"test", (p1,p2), font, 4, (255,255,255), 2, cv2, LINE_AA )

    參數1:  img-      圖像對象;

    參數2:  "test"-      需要打印的字符text(數字的話可以利用str()轉成字符);

    參數3:  (p1,p2)-      坐標textOrg;

    參數4:  font-      字體fontFace(注意這里 font = cv2.FONT_HERSHEY_SIMPLEX);

    參數5:  4-       字號fontScale;

    參數6:  (255,255,255)-   顏色數組;

    參數7:  2-        線寬thickness;

    參數8:  LINE_AA-      線條種類line_type;

*關于 顏色數組:

      (255,255,255), (藍色,綠色,紅色),每個值都是0-255;

      比如:藍色(255,0,0),紫色(255,0,255)    

可以調整cv2.circle()函數和cv2.putText()函數中的 半徑、線寬 等參數使得輸出滿足需求方便查看;

結果:

python3怎么利用Dlib19.7實現人臉68個特征點標定

圖2 測試結果1 

python3怎么利用Dlib19.7實現人臉68個特征點標定  

以上是“python3怎么利用Dlib19.7實現人臉68個特征點標定”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永平县| 南皮县| 澄城县| 宣化县| 宜春市| 重庆市| 孟村| 南皮县| 布尔津县| 包头市| 交城县| 化隆| 祥云县| 师宗县| 新余市| 建阳市| 盖州市| 县级市| 余姚市| 乌鲁木齐县| 专栏| 永靖县| 大庆市| 岳阳县| 乌拉特后旗| 开阳县| 古浪县| 南通市| 德安县| 六安市| 双鸭山市| 江安县| 威远县| 锦屏县| 拉萨市| 盐边县| 德格县| 绩溪县| 静乐县| 泸西县| 分宜县|