日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python读取视频流做人脸识别_基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释...

發布時間:2025/3/15 python 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python读取视频流做人脸识别_基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 #-*- coding: utf-8 -*-

2 from __future__ importunicode_literals3 #操作文件

4 importos5 #科學計算

6 importnumpy as np7 #圖像識別

8 importcv2 as cv9 #數據預處理, 該項目中只使用了標簽編碼

10 importsklearn.preprocessing as sp11

12

13 defload_imgs(directory):14 '''加載 directory 該文件夾下所有以 .jpg 結尾的圖片'''

15 #識別 系統環境 自動分配當前系統的路徑分隔符并替換

16 directory =os.path.normpath(directory)17 #判斷當前路徑是否為存在

18 if notos.path.isdir(directory):19 #手動拋出異常 biu biu biu

20 raise IOError("The directory '" + directory + "' doesn't exist!")21 #創建圖片集合 用于存儲文件夾名和該文件夾下所有的圖片

22 faces ={}23 #os.walk(directory) 獲取當前文件夾下所有的文件夾以及文件

24 #curdir: 當前文件夾路徑

25 #subdirs: 當前文件夾下所有文件夾 (列表)

26 #files: 當前文件夾下所有文件 (列表)

27 for curdir, subdirs, files inos.walk(directory):28 #首先便利所有的文件 篩選.jpg結尾文件并循環

29 for jpeg in (file for file in files if file.endswith('.jpg')):30 #拼接圖片路徑

31 path =os.path.join(curdir, jpeg)32 #獲取該圖片分類名稱

33 label = path.split(os.path.sep)[-2]34 #判斷當前key值是否存在圖片集合中, 如果為空則創建該鍵并賦值空列表

35 #否則給圖片集合中的 key 添加圖片路徑

36 if label not infaces:37 faces[label] =[]38 faces[label].append(path)39 #返回圖片集合

40 returnfaces41

42

43 defLBPHModel(fd, codec, train_path):44 '''

45 -------------------46 參數說明: fd, codec, [model_path]47 fd: Haar-like(人臉特征模型對象)48 codec: LabelEncoder(標簽編碼器對象)49 model_path: 服用模型路徑(功能未實現, 沒找到讀取的函數...)50 -------------------51 返回: 訓練后的模型對象52 '''

53 #加載當前文件加下所有.jpg結尾的圖片

54 train_faces = load_imgs(train_path) #'traom_imgs'

55 #將所有標簽放入編碼器進行訓練

56 codec.fit(list(train_faces.keys()))57 #創建空的訓練集數組x y

58 train_x, train_y =[], []59 #循環所有訓練組

60 for label, filenames intrain_faces.items():61 #循環當前樣本組中的圖片

62 for filename infilenames:63 #讀取圖片

64 image =cv.imread(filename)65 #將圖片轉成灰度圖

66 gray =cv.cvtColor(image, cv.COLOR_BGR2GRAY)67 #獲取人臉特征位置

68 faces =fd.detectMultiScale(69 gray, 1.1, 2, minSize=(100, 100))70 #循環臉部特征數組

71 for l, t, w, h infaces:72 #將圖片中的臉部特征裁剪下來

73 train_x.append(gray[t:t + h, l:l +w])74 #標簽編碼結果存儲

75 train_y.append(codec.transform([label])[0])76 train_y =np.array(train_y)77 #創建LBPH人臉檢測器

78 model =cv.face.LBPHFaceRecognizer_create()79 #對訓練集進行訓練

80 model.train(train_x, train_y)81 returnmodel82

83

84 if __name__ == "__main__":85 #訓練集圖片存儲路徑

86 train_path = 'train_imgs'

87 #讀取人臉描述文件, 構建人臉檢測器

88 fd = cv.CascadeClassifier('face.xml')89 #創建標簽編碼器

90 codec =sp.LabelEncoder()91 #獲取model

92 model =LBPHModel(fd, codec, train_path)93 #打開視頻捕捉設備

94 vc =cv.VideoCapture(0)95 whileTrue:96 #讀取視頻幀

97 frame = vc.read()[1]98 #反轉圖片

99 frame = cv.flip(frame, 1)100 #print(frame)

101 #人臉位置檢測, 返回數組

102 faces = fd.detectMultiScale(frame, 1.3, 5)103 #循環人臉位置數組

104 for l, t, w, h infaces:105 #給人臉描邊

106 cv.rectangle(frame, (l, t), (l + w, t +h),107 (255, 0, 0), 4)108 #復制原圖片文本

109 gray =frame.copy()110 #將圖片變化成灰度圖

111 gray =cv.cvtColor(gray, cv.COLOR_BGR2GRAY)112 #對面部特征進行識別

113 pred_test_y = model.predict(gray[t:t + h, l:l +w])[0]114 #將預測后的結果進行標簽解碼

115 face_name =codec.inverse_transform([pred_test_y])[0]116 #給圖片添加文本 圖片矩陣, 添加文本名稱, 設置文本顯示位置,

117 #字體樣式, 字體大小, 字體顏色, 字體粗細

118 cv.putText(frame, face_name, (l + 5, t - 15),119 cv.FONT_HERSHEY_SIMPLEX, 1,120 (255, 255, 255), 3)121 #打印名稱

122 #print(face_name)

123

124 #顯示圖片

125 cv.imshow('VideoCapture', frame)126 #等待按下ESC鍵退出, 每次等待33毫秒

127 if cv.waitKey(33) == 27:128 break

129 #關閉視頻捕捉設備

130 vc.release()131 #關閉視頻窗口

132 cv.destroyAllWindows()

總結

以上是生活随笔為你收集整理的python读取视频流做人脸识别_基于 Python + OpenCV 进行人脸识别,视频追踪代码全注释...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。