中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

python如何利用dlib獲取人臉的68個landmark

發布時間:2021-05-11 10:59:53 來源:億速云 閱讀:486 作者:小新 欄目:開發技術

小編給大家分享一下python如何利用dlib獲取人臉的68個landmark,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

python的五大特點是什么

python的五大特點:1.簡單易學,開發程序時,專注的是解決問題,而不是搞明白語言本身。2.面向對象,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現面向對象編程。3.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。

(1) 單人臉情況

import cv2
import dlib

path = "1.jpg"
img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#人臉檢測畫框
detector = dlib.get_frontal_face_detector()
# 獲取人臉關鍵點檢測器
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
#獲取人臉框位置信息
dets = detector(gray, 1)#1表示采樣(upsample)次數 0識別的人臉少點,1識別的多點,2識別的更多,小臉也可以識別
for face in dets:
  shape = predictor(img, face) # 尋找人臉的68個標定點
  # 遍歷所有點,打印出其坐標,并圈出來
  for pt in shape.parts():
    pt_pos = (pt.x, pt.y)
    cv2.circle(img, pt_pos, 2, (0, 0, 255), 1)#img, center, radius, color, thickness

  cv2.imshow("image", img)

cv2.waitKey(0)
cv2.destroyAllWindows()

(2) 多人臉情況

import cv2
import dlib

path2 = "zxc.jpg"
img = cv2.imread(path2)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#人臉檢測畫框
detector = dlib.get_frontal_face_detector()
# 獲取人臉關鍵點檢測器
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
#獲取人臉框位置信息
dets = detector(gray, 1)#1表示采樣(upsample)次數 0識別的人臉少點,1識別的多點,2識別的更多,小臉也可以識別

for i in range(len(dets)):
  shape = predictor(img, dets[i]) # 尋找人臉的68個標定點
  # 遍歷所有點,打印出其坐標,并圈出來
  for pt in shape.parts():
    pt_pos = (pt.x, pt.y)
    cv2.circle(img, pt_pos, 2, (0, 0, 255), 1)#img, center, radius, color, thickness

cv2.imshow("image", img)

cv2.waitKey(0)#等待鍵盤輸入
cv2.destroyAllWindows()

(3) 獲取電腦攝像頭實時識別標定

import cv2
import dlib
import numpy as np

cap = cv2.VideoCapture(0)#打開筆記本的內置攝像頭,若參數是視頻文件路徑則打開視頻
cap.isOpened()

def key_points(img):
  points_keys = []
  PREDICTOR_PATH = "shape_predictor_68_face_landmarks.dat"
  detector = dlib.get_frontal_face_detector()
  predictor = dlib.shape_predictor(PREDICTOR_PATH)
  rects = detector(img,1)

  for i in range(len(rects)):
    landmarks = np.matrix([[p.x,p.y] for p in predictor(img,rects[i]).parts()])
    for point in landmarks:
      pos = (point[0,0],point[0,1])
      points_keys.append(pos)
      cv2.circle(img,pos,2,(255,0,0),-1)
  return img

while(True):
  ret, frame = cap.read()#按幀讀取視頻,ret,frame是cap.read()方法的兩個返回值。其中ret是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結尾,它的返回值就為False。frame就是每一幀的圖像,是個三維矩陣。
  # gray = cv2.cvtColor(frame)
  face_key = key_points(frame)
  cv2.imshow('frame',face_key)
  if cv2.waitKey(1) & 0xFF == ord('q'):
    break

cap.release()#釋放攝像頭
cv2.destroyAllWindows()#關閉所有圖像窗口

以上是“python如何利用dlib獲取人臉的68個landmark”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

定襄县| 资源县| 东方市| 伊金霍洛旗| 云霄县| 泗水县| 廉江市| 南宫市| 乐东| 泸州市| 沁水县| 湘潭市| 中西区| 闸北区| 九龙坡区| 哈巴河县| 太仓市| 莱西市| 胶南市| 绥滨县| 阜平县| 平谷区| 北辰区| 屏东市| 武胜县| 淮阳县| 安化县| 徐汇区| 南皮县| 洪湖市| 道真| 上思县| 柳林县| 汉源县| 芷江| 崇阳县| 类乌齐县| 蚌埠市| 荣昌县| 中西区| 萝北县|