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

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

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

服務器之家 - 腳本之家 - Python - Python3結合Dlib實現人臉識別和剪切

Python3結合Dlib實現人臉識別和剪切

2021-01-08 00:32TimeStamp Python

本篇文章給大家詳細分析了Python3結合Dlib實現人臉識別和剪切這個技術,對此有興趣的朋友參考學習下。

0.引言

利用python開發,借助Dlib庫進行人臉識別,然后將檢測到的人臉剪切下來,依次排序顯示在新的圖像上;

實現的效果如下圖所示,將圖1原圖中的6張人臉檢測出來,然后剪切下來,在圖像窗口中依次輸出顯示人臉;

實現比較簡單,代碼量也比較少,適合入門或者興趣學習。

Python3結合Dlib實現人臉識別和剪切

圖1 原圖和處理后得到的圖像窗口

1.開發環境

python:  3.6.3

dlib:    19.7

OpenCv, numpy

import dlib  # 人臉識別的庫dlib
import numpy as np # 數據處理的庫numpy
import cv2  # 圖像處理的庫OpenCv

2.設計流程

工作內容主要以下兩大塊:dlib人臉檢測 和 繪制新圖像

2.1 dlib人臉檢測:

dlib的使用,在我之前另一篇博客里面介紹過;

2.2 繪制新圖像:

2.2.1 確定空白圖像尺寸

這部分首先要根據檢測到的人臉數和人臉大小,來確定繪制圖像所需要的尺寸:      

多張人臉要輸出到一行,先進行一次人臉的遍歷,記每張人臉的尺寸為height*width(高度和寬度說明見圖2),

我取的生成圖像的尺寸:height_max(最大高度)和width_sum(寬度之和),然后根據尺寸大小來新建空白圖像:

img_blank = np.zeros((height_max, width_sum, 3), np.uint8)

2.2.2 圖像填充

然后再進行一次人臉遍歷,這次進行空白圖像img_blank進行填充:

for i in range(height):
for j in range(width):
img_blank[i][blank_start+j] = img[d.top()+i][d.left()+j]

  Python3結合Dlib實現人臉識別和剪切

圖2 圖像尺寸說明

如果想訪問圖像的某點像素,可以利用img[height][width]:

存儲像素其實是一個三維數組,先高度height,然后寬度width;

返回的是一個顏色數組(0-255,0-255,0-255),按照(B, G, R)的順序,比如 藍色 就是(255,0,0),紅色 是(0,0,255);

3.源碼

  1. # 2018-01-22 
  2. # By TimeStamp 
  3. # #cnblogs: http://www.cnblogs.com/AdaminXie/ 
  4. import dlib  # 人臉識別的庫dlib 
  5. import numpy as np # 數據處理的庫numpy 
  6. import cv2  # 圖像處理的庫OpenCv 
  7. # dlib預測器 
  8. detector = dlib.get_frontal_face_detector() 
  9. predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat'
  10. # 讀取圖像 
  11. path = "F:/code/python/***/pic/" 
  12. img = cv2.imread(path+"test.jpg"
  13. #print("img/shape:", img.shape) 
  14. # dlib檢測 
  15. dets = detector(img, 1) 
  16. print("人臉數:", len(dets)) 
  17. # 記錄人臉矩陣大小 
  18. height_max = 0 
  19. width_sum = 0 
  20. # 計算要生成的圖像img_blank大小 
  21. for k, d in enumerate(dets): 
  22. # 計算矩形大小 
  23. # (x,y), (寬度width, 高度height) 
  24. pos_start = tuple([d.left(), d.top()]) 
  25. pos_end = tuple([d.right(), d.bottom()]) 
  26. # 計算矩形框大小 
  27. height = d.bottom()-d.top() 
  28. width = d.right()-d.left() 
  29. # 處理寬度 
  30. width_sum += width 
  31. # 處理高度 
  32. if height > height_max: 
  33. height_max = height 
  34. else
  35. height_max = height_max 
  36. # 繪制用來顯示人臉的圖像的大小 
  37. print("img_blank的大小:"
  38. print("高度", height_max, "寬度", width_sum)  
  39. # 生成用來顯示的圖像 
  40. img_blank = np.zeros((height_max, width_sum, 3), np.uint8) 
  41. # 記錄每次開始寫入人臉像素的寬度位置 
  42. blank_start = 0  
  43. # 將人臉填充到img_blank 
  44. for k, d in enumerate(dets): 
  45. height = d.bottom()-d.top() 
  46. width = d.right()-d.left() 
  47. # 填充 
  48. for i in range(height): 
  49. for j in range(width): 
  50. img_blank[i][blank_start+j] = img[d.top()+i][d.left()+j] 
  51. # 調整圖像 
  52. blank_start += width 
  53. cv2.namedWindow("img_faces", 2) 
  54. cv2.imshow("img_faces", img_blank) 
  55. cv2.waitKey(0) 

結果:

 Python3結合Dlib實現人臉識別和剪切

圖3 原圖和處理后得到的圖像窗口

以上就是本次我們介紹的關于Python3結合Dlib實現人臉識別和剪切的相關技術內容,大家如果在學習后還有任何不明白的地方可以在下方的留言區討論。

原文鏈接:https://www.cnblogs.com/AdaminXie/p/8339863.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄色免费看片网站 | 国产人妖一区二区 | 懂色一区二区三区av片 | 欧美激情在线播放 | 日韩欧美在线一区二区 | 98久9在线 | 免费| 成人永久免费视频 | 成人午夜电影网 | 成人av在线电影 | 99在线播放 | 一本大道色卡1卡2卡3 | 亚洲视频中文字幕 | 精品久久久久国产 | 午夜精品在线观看 | 久免费视频 | 天天操天天干天天 | 亚洲精品久久久久久国产精华液 | 国产成人一区二区 | 中文字幕免费看 | 日韩在线国产精品 | 国产91精品一区二区绿帽 | 日韩在线二区 | 欧美一区二区在线视频 | av一区二区三区四区 | 中国黄色片在线观看 | 国内精品久久久 | 日韩婷婷 | 欧美在线视频一区二区 | 综合久久久久 | 偷拍一区二区三区 | 国产中文字幕在线 | 久久久精品国产 | 欧美日韩亚洲成人 | 荷兰欧美一级毛片 | 欧美日韩精品电影 | 国产成人久久精品一区二区三区 | 中文字幕日韩欧美一区二区三区 | 日本精品在线观看 | 黄色录像特级 | 亚洲2020天天堂在线观看 | 久久中文字幕一区二区三区 |