導航:首頁 > 編程語言 > Python人臉識別顯示行程碼

Python人臉識別顯示行程碼

發布時間:2022-08-31 03:21:24

① 關於python人臉識別的問題

應該是沒有找到分類器編碼文件,把 haarcascade_frontalface_default.xml, haarcascade_eye.xml文件放到項目根目錄下,再用cv.CascadeClassifier(path1), cv.CascadeClassifier(path2)兩個API導入,另python下windows的文件路徑要用 \\ 或者 /

② 行程碼多久需要重新人臉識別一次

行程碼不需要人臉識別。
他是國家政務中心平台推出來的,通過手機號碼的信號源來定位手機軌跡的,疫情當下,現在每個人都有一個健康碼,每個人都綁定了一個固定的手機號碼,手機號碼運行的軌跡就是行程軌跡,所以是不需要人臉識別的。
主要根據信號源來定位的。可以直接輸入要查詢人的手機號,在輸入驗證碼就可以查了。

③ 誰用過python中的第三方庫face recognition

簡介
該庫可以通過python或者命令行即可實現人臉識別的功能。使用dlib深度學習人臉識別技術構建,在戶外臉部檢測資料庫基準(Labeled Faces in the Wild)上的准確率為99.38%。
在github上有相關的鏈接和API文檔。

在下方為提供的一些相關源碼或是文檔。當前庫的版本是v0.2.0,點擊docs可以查看API文檔,我們可以查看一些函數相關的說明等。

安裝配置
安裝配置很簡單,按照github上的說明一步一步來就可以了。
根據你的python版本輸入指令:
pip install face_recognition11

或者
pip3 install face_recognition11

正常來說,安裝過程中會出錯,會在安裝dlib時出錯,可能報錯也可能會卡在那不動。因為pip在編譯dlib時會出錯,所以我們需要手動編譯dlib再進行安裝。

按照它給出的解決辦法:
1、先下載下來dlib的源碼。
git clone

2、編譯dlib。
cd dlib
mkdir build
cd build
cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1
cmake --build1234512345

3、編譯並安裝python的拓展包。
cd ..
python3 setup.py install --yes USE_AVX_INSTRUCTIONS --no DLIB_USE_CUDA1212

注意:這個安裝步驟是默認認為沒有GPU的,所以不支持cuda。
在自己手動編譯了dlib後,我們可以在python中import dlib了。
之後再重新安裝,就可以配置成功了。
根據你的python版本輸入指令:
pip install face_recognition11

或者
pip3 install face_recognition11

安裝成功之後,我們可以在python中正常import face_recognition了。

編寫人臉識別程序
編寫py文件:
# -*- coding: utf-8 -*-
#

# 檢測人臉
import face_recognition
import cv2

# 讀取圖片並識別人臉
img = face_recognition.load_image_file("silicon_valley.jpg")
face_locations = face_recognition.face_locations(img)
print face_locations

# 調用opencv函數顯示圖片
img = cv2.imread("silicon_valley.jpg")
cv2.namedWindow("原圖")
cv2.imshow("原圖", img)

# 遍歷每個人臉,並標注
faceNum = len(face_locations)
for i in range(0, faceNum):
top = face_locations[i][0]
right = face_locations[i][1]
bottom = face_locations[i][2]
left = face_locations[i][3]

start = (left, top)
end = (right, bottom)

color = (55,255,155)
thickness = 3
cv2.rectangle(img, start, end, color, thickness)

# 顯示識別結果
cv2.namedWindow("識別")
cv2.imshow("識別", img)

cv2.waitKey(0)
cv2.destroyAllWindows()

注意:這里使用了python-OpenCV,一定要配置好了opencv才能運行成功。
運行結果:
程序會讀取當前目錄下指定的圖片,然後識別其中的人臉,並標注每個人臉。
(使用圖片來自美劇矽谷)

編寫人臉比對程序
首先,我在目錄下放了幾張圖片:

這里用到的是一張喬布斯的照片和一張奧巴馬的照片,和一張未知的照片。
編寫程序:
# 識別圖片中的人臉
import face_recognition
jobs_image = face_recognition.load_image_file("jobs.jpg");
obama_image = face_recognition.load_image_file("obama.jpg");
unknown_image = face_recognition.load_image_file("unknown.jpg");

jobs_encoding = face_recognition.face_encodings(jobs_image)[0]
obama_encoding = face_recognition.face_encodings(obama_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]

results = face_recognition.compare_faces([jobs_encoding, obama_encoding], unknown_encoding )
labels = ['jobs', 'obama']

print('results:'+str(results))

for i in range(0, len(results)):
if results[i] == True:
print('The person is:'+labels[i])

運行結果:

識別出未知的那張照片是喬布斯的。
攝像頭實時識別
代碼:
# -*- coding: utf-8 -*-
import face_recognition
import cv2

video_capture = cv2.VideoCapture(1)

obama_img = face_recognition.load_image_file("obama.jpg")
obama_face_encoding = face_recognition.face_encodings(obama_img)[0]

face_locations = []
face_encodings = []
face_names = []
process_this_frame = True

while True:
ret, frame = video_capture.read()

small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)

if process_this_frame:
face_locations = face_recognition.face_locations(small_frame)
face_encodings = face_recognition.face_encodings(small_frame, face_locations)

face_names = []
for face_encoding in face_encodings:
match = face_recognition.compare_faces([obama_face_encoding], face_encoding)

if match[0]:
name = "Barack"
else:
name = "unknown"

face_names.append(name)

process_this_frame = not process_this_frame

for (top, right, bottom, left), name in zip(face_locations, face_names):
top *= 4
right *= 4
bottom *= 4
left *= 4

cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)

cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), 2)
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(frame, name, (left+6, bottom-6), font, 1.0, (255, 255, 255), 1)

cv2.imshow('Video', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
break

video_capture.release()
cv2.destroyAllWindows()5455

識別結果:
我直接在手機上網路了幾張圖試試,程序識別出了奧巴馬。

這個庫很cool啊!

④ 如何用pca做人臉識別 python實現.帶客戶端的

基於特徵臉(PCA)的人臉識別方法
特徵臉方法是基於KL變換的人臉識別方法,KL變換是圖像壓縮的一種最優正交變換。高維的圖像空間經過KL變換後得到一組新的正交基,保留其中重要的正交基,由這些基可以張成低維線性空間。如果假設人臉在這些低維線性空間的投影具有可分性,就可以將這些投影用作識別的特徵矢量,這就是特徵臉方法的基本思想。這些方法需要較多的訓練樣本,而且完全是基於圖像灰度的統計特性的。目前有一些改進型的特徵臉方法。


比如人臉灰度照片40x40=1600個像素點,用每個像素的灰度值組成的矩陣代表這個人的人臉。那麼這個人人臉就要1600 個特徵。拿一堆這樣的樣本過來做pca,抽取得到的只是在統計意義下能代表某個樣本的幾個特徵。


人臉識別可以採用神經網 絡深度學習的思路,國內的ColorReco在這邊有比較多的案例。

⑤ 如何用Python實現簡單人臉識別

你可以使用opencv庫提供的人臉識別模塊,這樣子會比較快

⑥ 如何使用Python,基於OpenCV與Face++實現人臉解鎖的功能

近幾天微軟的發布會上講到了不少認臉解鎖的內容,經過探索,其實利用手頭的資源我們完全自己也可以完成這樣一個過程。

本文講解了如何使用Python,基於OpenCV與Face++實現人臉解鎖的功能。

本文基於Python 2.7.11,Windows 8.1 系統。

主要內容

⑦ python人臉識別代碼怎麼寫

檢查cv2是否存在(看報錯)。如果不存在,用pip install cv2安裝。如果存在,請核對代碼是否存在語法錯誤。

⑧ 如何利用python進行精準人臉識別

要調用api介面,建議用face++的,支付寶的人臉識別都是用的這個。可能需要一點費用,不貴,代碼里把fece++的api介面放進代碼就行,還可以可以檢測情緒,年齡等等的。

當然也有其他公司人臉識別的api介面,自己發現吧,其實很多,但基本都不會免費,有的可以試用

⑨ 有一張人臉的側臉圖像,如何用python及相關的庫來計算人臉轉過的角度。

這個很難辦到,不過可以通過判斷關鍵點的特點進行判斷,但是准確率不高
前言
很多人都認為人臉識別是一項非常難以實現的工作,看到名字就害怕,然後心懷忐忑到網上一搜,看到網上N頁的教程立馬就放棄了。這些人里包括曾經的我自己。其實如果如果你不是非要深究其中的原理,只是要實現這一工作的話,人臉識別也沒那麼難。今天我們就來看看如何在40行代碼以內簡單地實現人臉識別。
一點區分
對於大部分人來說,區分人臉檢測和人臉識別完全不是問題。但是網上有很多教程有無無意地把人臉檢測說成是人臉識別,誤導群眾,造成一些人認為二者是相同的。其實,人臉檢測解決的問題是確定一張圖上有木有人臉,而人臉識別解決的問題是這個臉是誰的。可以說人臉檢測是是人識別的前期工作。今天我們要做的是人臉識別。
所用工具
Anaconda 2——Python 2
Dlib
scikit-image
Dlib
對於今天要用到的主要工具,還是有必要多說幾句的。Dlib是基於現代C++的一個跨平台通用的框架,作者非常勤奮,一直在保持更新。Dlib內容涵蓋機器學習、圖像處理、數值演算法、數據壓縮等等,涉獵甚廣。更重要的是,Dlib的文檔非常完善,例子非常豐富。就像很多庫一樣,Dlib也提供了Python的介面,安裝非常簡單,用pip只需要一句即可:
pip install dlib
上面需要用到的scikit-image同樣只是需要這么一句:
pip install scikit-image
註:如果用pip install dlib安裝失敗的話,那安裝起來就比較麻煩了。錯誤提示很詳細,按照錯誤提示一步步走就行了。

人臉識別
之所以用Dlib來實現人臉識別,是因為它已經替我們做好了絕大部分的工作,我們只需要去調用就行了。Dlib裡面有人臉檢測器,有訓練好的人臉關鍵點檢測器,也有訓練好的人臉識別模型。今天我們主要目的是實現,而不是深究原理。感興趣的同學可以到官網查看源碼以及實現的參考文獻。今天的例子既然代碼不超過40行,其實是沒啥難度的。有難度的東西都在源碼和論文里。
首先先通過文件樹看一下今天需要用到的東西:

准備了六個候選人的圖片放在candidate-faces文件夾中,然後需要識別的人臉圖片test.jpg。我們的工作就是要檢測到test.jpg中的人臉,然後判斷她到底是候選人中的誰。另外的girl-face-rec.py是我們的python腳本。shape_predictor_68_face_landmarks.dat是已經訓練好的人臉關鍵點檢測器。dlib_face_recognition_resnet_model_v1.dat是訓練好的ResNet人臉識別模型。ResNet是何凱明在微軟的時候提出的深度殘差網路,獲得了 ImageNet 2015 冠軍,通過讓網路對殘差進行學習,在深度和精度上做到了比
CNN 更加強大。
1. 前期准備
shape_predictor_68_face_landmarks.dat和dlib_face_recognition_resnet_model_v1.dat都可以在這里找到。
然後准備幾個人的人臉圖片作為候選人臉,最好是正臉。放到candidate-faces文件夾中。
本文這里准備的是六張圖片,如下:

她們分別是

然後准備四張需要識別的人臉圖像,其實一張就夠了,這里只是要看看不同的情況:

可以看到前兩張和候選文件中的本人看起來還是差別不小的,第三張是候選人中的原圖,第四張圖片微微側臉,而且右側有陰影。
2.識別流程
數據准備完畢,接下來就是代碼了。識別的大致流程是這樣的:
3.代碼
代碼不做過多解釋,因為已經注釋的非常完善了。以下是girl-face-rec.py
# -*- coding: UTF-8 -*-
import sys,os,dlib,glob,numpy
from skimage import io
if len(sys.argv) != 5:
print "請檢查參數是否正確"
exit()
# 1.人臉關鍵點檢測器
predictor_path = sys.argv[1]
# 2.人臉識別模型
face_rec_model_path = sys.argv[2]
# 3.候選人臉文件夾
faces_folder_path = sys.argv[3]
# 4.需識別的人臉
img_path = sys.argv[4]
# 1.載入正臉檢測器
detector = dlib.get_frontal_face_detector()
# 2.載入人臉關鍵點檢測器
sp = dlib.shape_predictor(predictor_path)
# 3. 載入人臉識別模型
facerec = dlib.face_recognition_model_v1(face_rec_model_path)
# win = dlib.image_window()
# 候選人臉描述子list
descriptors = []
# 對文件夾下的每一個人臉進行:
# 1.人臉檢測
# 2.關鍵點檢測
# 3.描述子提取
for f in glob.glob(os.path.join(faces_folder_path, "*.jpg")):
print("Processing file: {}".format(f))
img = io.imread(f)
#win.clear_overlay()
#win.set_image(img)
# 1.人臉檢測
dets = detector(img, 1)
print("Number of faces detected: {}".format(len(dets)))
for k, d in enumerate(dets):
# 2.關鍵點檢測
shape = sp(img, d)
# 畫出人臉區域和和關鍵點
# win.clear_overlay()
# win.add_overlay(d)
# win.add_overlay(shape)
# 3.描述子提取,128D向量
face_descriptor = facerec.compute_face_descriptor(img, shape)
# 轉換為numpy array
v = numpy.array(face_descriptor)
descriptors.append(v)
# 對需識別人臉進行同樣處理
# 提取描述子,不再注釋
img = io.imread(img_path)
dets = detector(img, 1)
dist = []
for k, d in enumerate(dets):
shape = sp(img, d)
face_descriptor = facerec.compute_face_descriptor(img, shape)
d_test = numpy.array(face_descriptor)
# 計算歐式距離
for i in descriptors:
dist_ = numpy.linalg.norm(i-d_test)
dist.append(dist_)
# 候選人名單
candidate = ['Unknown1','Unknown2','Shishi','Unknown4','Bingbing','Feifei']
# 候選人和距離組成一個dict
c_d = dict(zip(candidate,dist))
cd_sorted = sorted(c_d.iteritems(), key=lambda d:d[1])
print "\n The person is: ",cd_sorted[0][0]
dlib.hit_enter_to_continue()

4.運行結果
我們在.py所在的文件夾下打開命令行,運行如下命令
python girl-face-rec.py 1.dat 2.dat ./candidate-faecs test1.jpg
由於shape_predictor_68_face_landmarks.dat和dlib_face_recognition_resnet_model_v1.dat名字實在太長,所以我把它們重命名為1.dat和2.dat。
運行結果如下:
The person is Bingbing。
記憶力不好的同學可以翻上去看看test1.jpg是誰的圖片。有興趣的話可以把四張測試圖片都運行下試試。
這里需要說明的是,前三張圖輸出結果都是非常理想的。但是第四張測試圖片的輸出結果是候選人4。對比一下兩張圖片可以很容易發現混淆的原因。
機器畢竟不是人,機器的智能還需要人來提升。
有興趣的同學可以繼續深入研究如何提升識別的准確率。比如每個人的候選圖片用多張,然後對比和每個人距離的平均值之類的。全憑自己了。

閱讀全文

與Python人臉識別顯示行程碼相關的資料

熱點內容
怎麼投訴蘋果商店app 瀏覽:468
華為手機如何看有多少個app 瀏覽:732
btr如何管理別的伺服器 瀏覽:408
spwm軟體演算法 瀏覽:184
70多歲單身程序員 瀏覽:221
高考考前解壓拓展訓練 瀏覽:217
用紙做解壓玩具不用澆水 瀏覽:584
谷輪壓縮機序列號 瀏覽:736
牛頓插值法編程 瀏覽:366
php多用戶留言系統 瀏覽:731
安卓和蘋果如何切換流量 瀏覽:703
怎麼知道dns伺服器是多少 瀏覽:976
5995用什麼簡便演算法脫式計算 瀏覽:918
電腦上如何上小米雲伺服器地址 瀏覽:921
手機資料解壓密碼 瀏覽:444
44引腳貼片單片機有哪些 瀏覽:692
阿里程序員腦圖 瀏覽:189
廣東編程貓學習班 瀏覽:708
上海數控編程培訓學校 瀏覽:313
怎麼下載我的解壓神器 瀏覽:634