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

溫馨提示×

溫馨提示×

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

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

Python中怎么實現一個面部識別功能

發布時間:2021-07-10 16:24:26 來源:億速云 閱讀:193 作者:Leah 欄目:編程語言

這篇文章給大家介紹Python中怎么實現一個面部識別功能,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

使用Haar人臉特征分類器

用以下圖像為例:

Python中怎么實現一個面部識別功能

來看看識別這張圖片中的人臉代碼:

import cv2               group_of_people_image = cv2.imread('images/image7.jpg')        frontal_face_classifier = cv2.CascadeClassifier('classifier/haarcascade_frontalface_default.xml')        image_in_gray_scale = cv2.cvtColor(group_of_people_image,cv2.COLOR_BGR2GRAY)               faces = frontal_face_classifier.detectMultiScale(image=image_in_gray_scale,scaleFactor=1.3, minNeighbors=6)               for (x_axis, y_axis, weight,height) in faces:            cv2.rectangle(group_of_people_image,(x_axis, y_axis), (x_axis + weight, y_axis + height), (255, 0, 0), 2)

該算法將圖像轉換為灰度圖像,如前所述,這是分類器操作的一個基本步驟,然后我們使用dectedMultiScale函數搜索圖像中的人臉,并通過繪制矩形來顯示圖像的位置,當定位人臉時結果如下:

Python中怎么實現一個面部識別功能

我們能夠準確地分析兩張出現的臉(采用矩形的方式將人臉框起來),有兩個人完全正面地露出他們的臉,人臉完全顯現,所以我們可以清楚地看到他的臉;另一個人只露出了面部的一部分,所以我們沒有得到準確的信息來確認這是一張完整的人臉。

面部特征檢測

Dlib是一個擁有一些分類器的庫,可以幫助我們檢測人臉的某些部分,例如:眼睛、眉毛、鼻子和洋娃娃的區域。以下圖為例:

Python中怎么實現一個面部識別功能

現在,使用算法來識別圖像中的面部特征點:

import cv2        import dlib        import numpy as np               initial_image = cv2.imread('images/image9.jpg')        initial_image_in_rgb = cv2.cvtColor(initial_image,cv2.COLOR_BGR2RGB)        reference_image = initial_image_in_rgb.copy()               classifier_path = dlib.shape_predictor('classifier/shape_predictor_68_face_landmarks.dat')        frontal_face_detector = dlib.get_frontal_face_detector()               rectangles =frontal_face_detector(initial_image,1)               for k, d inenumerate(rectangles):            cv2.rectangle(reference_image,(d.left(), d.top()), (d.right(), d.bottom()), (255, 255, 0), 2)               landmarks = []               for rectangle in rectangles:            landmarks.append(np.matrix([[p.x, p.y] for p inclassifier_path(reference_image,rectangle).parts()]))               for landmark in landmarks:            for index, point inenumerate(landmark):                point_center = (point[0, 0], point[0, 1])                cv2.circle(reference_image,point_center, 3, (255, 255, 0), -1)                cv2.putText(reference_image,str(index), point_center, cv2.FONT_HERSHEY_COMPLEX, 3, (255, 255, 255), 2)

我們使用的是人臉68個特征分類器,它試圖更精確地理解點面,這給了我們更多的選擇去分析結果,其缺點是速度有點慢。所以必須劃定一個矩形來確定我們的臉可能在哪里,特征是我們可以識別的人臉特征,包括臉、嘴、眼睛、眉毛。

一旦用矩形的方式框出了臉,就可以使用功能部件將這些特征返回,最后將得到一些可視化的東西去生成一個帶有面部點的圖像。結果是:

Python中怎么實現一個面部識別功能

這些點對于幫助識別表情很重要,例如我們可以識別出這個男孩睜著眼睛,閉著嘴巴。把這看作是一種情緒的表現,可以說這個男孩很焦慮。當一個人微笑時,它可以幫助理解這種情緒可能表達的是幸福。

關于Python中怎么實現一個面部識別功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

崇左市| 台中县| 平南县| 兴仁县| 安多县| 措勤县| 宿松县| 洪洞县| 巴南区| 绥芬河市| 泊头市| 开封县| 佛教| 临江市| 雅安市| 西乡县| 香港| 渝中区| 德清县| 新干县| 资源县| 龙里县| 晴隆县| 龙陵县| 襄樊市| 大方县| 漳州市| 澎湖县| 桃园市| 周宁县| 武安市| 勐海县| 潜江市| 历史| 蓝山县| 新余市| 定日县| 偃师市| 斗六市| 邳州市| 古浪县|