国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 50行Python代碼實現人臉檢測功能

50行Python代碼實現人臉檢測功能

2021-01-07 00:46強哥 Python

現在的人臉識別技術已經得到了非常廣泛的應用,支付領域、身份驗證、美顏相機里都有它的應用。下面小編給大家帶來了基于50行Python代碼實現人臉檢測功能,一起看看吧

50行Python代碼實現人臉檢測功能

現在的人臉識別技術已經得到了非常廣泛的應用,支付領域、身份驗證、美顏相機里都有它的應用。用iPhone的同學們應該對下面的功能比較熟悉

50行Python代碼實現人臉檢測功能

iPhone的照片中有一個“人物”的功能,能夠將照片里的人臉識別出來并分類,背后的原理也是人臉識別技術。

這篇文章主要介紹怎樣用Python實現人臉檢測。人臉檢測是人臉識別的基礎。人臉檢測的目的是識別出照片里的人臉并定位面部特征點,人臉識別是在人臉檢測的基礎上進一步告訴你這個人是誰。

好了,介紹就到這里。接下來,開始準備我們的環境。

準備工作

本文的人臉檢測基于dlib,dlib依賴Boost和cmake,所以首先需要安裝這些包,以Ubuntu為例:

?
1
2
3
$ sudo apt-get install build-essential cmake
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libboost-all-dev

我們的程序中還用到numpy,opencv,所以也需要安裝這些庫:

?
1
2
3
4
$ pip install numpy
$ pip install scipy
$ pip install opencv-python
$ pip install dlib

人臉檢測基于事先訓練好的模型數據,從這里可以下到模型數據

http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

下載到本地路徑后解壓,記下解壓后的文件路徑,程序中會用到。

dlib的人臉特征點

上面下載的模型數據是用來估計人臉上68個特征點(x, y)的坐標位置,這68個坐標點的位置如下圖所示

50行Python代碼實現人臉檢測功能

我們的程序將包含兩個步驟:

第一步,在照片中檢測人臉的區域

第二部,在檢測到的人臉區域中,進一步檢測器官(眼睛、鼻子、嘴巴、下巴、眉毛)

人臉檢測代碼

我們先來定義幾個工具函數:

?
1
2
3
4
5
6
def rect_to_bb(rect):
  x = rect.left()
  y = rect.top()
  w = rect.right() - x
  h = rect.bottom() - y  
  return (x, y, w, h)

這個函數里的rect是dlib臉部區域檢測的輸出。這里將rect轉換成一個序列,序列的內容是矩形區域的邊界信息。

?
1
2
3
4
5
def shape_to_np(shape, dtype="int"):
  coords = np.zeros((68, 2), dtype=dtype)  
  for i in range(0, 68):
      coords[i] = (shape.part(i).x, shape.part(i).y)  
  return coords

這個函數里的shape是dlib臉部特征檢測的輸出,一個shape里包含了前面說到的臉部特征的68個點。這個函數將shape轉換成Numpy array,為方便后續處理。

?
1
2
3
4
5
def resize(image, width=1200):
  r = width * 1.0 / image.shape[1]
  dim = (width, int(image.shape[0] * r))
  resized = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)  
  return resized

這個函數里的image就是我們要檢測的圖片。在人臉檢測程序的最后,我們會顯示檢測的結果圖片來驗證,這里做resize是為了避免圖片過大,超出屏幕范圍。

接下來,開始我們的主程序部分

?
1
2
3
4
5
6
7
8
import sys import numpy as np
import dlib import cv2
if len(sys.argv) < 2:  
  print "Usage: %s <image file>" % sys.argv[0]
  sys.exit(1)
image_file = sys.argv[1]
detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

我們從sys.argv[1]參數中讀取要檢測人臉的圖片,接下來初始化人臉區域檢測的detector和人臉特征檢測的predictor。shape_predictor中的參數就是我們之前解壓后的文件的路徑。

?
1
2
3
4
image = cv2.imread(image_file)
image = resize(image, width=1200)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
rects = detector(gray, 1)

在檢測特征區域前,我們先要檢測人臉區域。這段代碼調用opencv加載圖片,resize到合適的大小,轉成灰度圖,最后用detector檢測臉部區域。因為一張照片可能包含多張臉,所以這里得到的是一個包含多張臉的信息的數組rects。

?
1
2
3
4
5
6
7
8
9
10
for (i, rect) in enumerate(rects):
  shape = predictor(gray, rect)
  shape = shape_to_np(shape)
  (x, y, w, h) = rect_to_bb(rect)
  cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
  cv2.putText(image, "Face #{}".format(i + 1), (x - 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)  
for (x, y) in shape:
      cv2.circle(image, (x, y), 2, (0, 0, 255), -1)
cv2.imshow("Output", image)
cv2.waitKey(0)

對于每一張檢測到的臉,我們進一步檢測臉部的特征(鼻子、眼睛、眉毛等)。對于臉部區域,我們用綠色的框在照片上標出;對于臉部特征,我們用紅色的點標出來。

最后我們把加了檢測標識的照片顯示出來,waitKey(0)表示按任意鍵可退出程序。

以上是我們程序的全部

測試

接下來是令人興奮的時刻,檢驗我們結果的時刻到來了。

下面是原圖

50行Python代碼實現人臉檢測功能

下面是程序識別的結果

50行Python代碼實現人臉檢測功能

可以看到臉部區域被綠色的長方形框起來了,臉上的特征(鼻子,眼睛等)被紅色點點標識出來了。

總結

以上所述是小編給大家介紹的50行Python代碼實現人臉檢測功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://developer.51cto.com/art/201801/564529.htm

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40 Weibo Article 41 Weibo Article 42
主站蜘蛛池模板: www久久久 | 久久久久久综合 | 在线成人免费电影 | 视频一区二区三区中文字幕 | www一区| 在线精品日韩 | 日本a v在线播放 | 四虎免费在线播放 | 久久精品一区 | 国产精品一区久久久 | 黄色一级视频免费看 | 日韩成人免费av | 亚洲免费大片 | 欧美一区永久视频免费观看 | av在线精品 | 亚洲一区国产视频 | 欧美日韩精品电影 | 成人1区| 在线观看一区二区视频 | 国久久久 | 一区二区免费视频 | 欧美伦理一区二区 | 欧美日一区 | 美女久久久久 | 麻豆国产尤物av尤物在线观看 | 另类一区 | 欧美日韩一级视频 | 黄久久久| 免费黄色大片网址 | 国产精品久久久久久一区二区三区 | 亚洲婷婷综合网 | 我要看黄色一级大片 | 国产精品美女久久久久高潮 | 国产欧美一区二区精品久久 | 日韩欧美在线一区 | 日韩在线精品 | 毛片视频网站在线观看 | 黄色av网站在线观看 | 久在线| 先锋av资源 | 高清一区二区三区 |