一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

服務器之家 - 腳本之家 - Python - 樹莓派上利用python+opencv+dlib實現嘴唇檢測的實現

樹莓派上利用python+opencv+dlib實現嘴唇檢測的實現

2022-02-21 00:26若水上善666 Python

本文主要介紹了樹莓派上利用python+opencv+dlib實現嘴唇檢測的實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

樹莓派上利用python+opencv+dlib實現嘴唇檢測

項目的目標是在樹莓派上運行python代碼以實現嘴唇檢測,本來以為樹莓派的硬件是可以流暢運行實時檢測的,但是實驗的效果表明樹莓派實時檢測是不可行,后面還需要改進。

實驗的效果如下:

樹莓派上利用python+opencv+dlib實現嘴唇檢測的實現

 

1、安裝相關庫文件

這里需要用的庫有opencv,numpy,dlib。

1.1 安裝opencv

pip3 install opencv-python

1.2 安裝numpy

樹莓派中自帶了numpy庫

pip3 install numpy

1.3 安裝dlib

在樹莓派的系統里面安裝dlib比較簡單,只需要pip install就可以了,但是在window系統中會有報錯,這個時候我們就需要安裝pip install dlib-19.17.99-cp37-cp37m-win_amd64.whl就可以了, 需要注意的是: 不同的python版本要安裝對應版本的dlib,也就是后面的“cp37-cp37m”,查看對應python能安裝的版本號,可以使用命令行:pip debug --verbose,可以顯示合適的安裝版本號。
在樹莓派上我安裝了cmake和dlib

pip3 install cmake
pip3 install dlib

 

2、代碼部分

dlib提取人臉特征中包含68個點

樹莓派上利用python+opencv+dlib實現嘴唇檢測的實現

顎點= 0C16
右眉點= 17C21
左眉點= 22C26
鼻點= 27C35
右眼點= 36C41
左眼點= 42C47
口角= 48C60
嘴唇分數= 61C67

from gpiozero import LED
from time import sleep
from subprocess import check_call
import cv2
import numpy as np
import dlib

print(cv2.__version__)
def search_cap_num():
  for i in range(2000):
      cap = cv2.VideoCapture(i)
      cap_opened = cap.isOpened()
      if cap_opened == True:
          return i
      
cap_num = search_cap_num()
cap = cv2.VideoCapture(cap_num)

detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

# 規定上嘴唇和下嘴唇連線的路徑
lip_order_dlib = np.array([[48, 49, 50, 51, 52, 53, 54, 64, 63, 62, 61, 60, 48],
                         [48, 59, 58, 57, 56, 55, 54, 64, 65, 66, 67, 60, 48]]) - 48
lip_order_num = lip_order_dlib.shape[1]

while 1:
  landmarks_lip = []
  ret, frame = cap.read()
  gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
  rects = detector(gray, 1)
  print('faces number:' + str(len(rects)))
  for (i, rect) in enumerate(rects):
      # 標記人臉中的68個landmark點
      landmarks = predictor(gray, rect)  
      for n in range(48, 68):
          x = landmarks.part(n).x
          y = landmarks.part(n).y
          landmarks_lip.append((x, y))
          # cv2.circle(img=img, center=(x, y), radius=3, color=(0, 255, 0), thickness=-1)
      for m in range(lip_order_num-1):
          cv2.line(frame, landmarks_lip[lip_order_dlib[0][m]], landmarks_lip[lip_order_dlib[0][m+1]], color=(0, 255, 0), thickness=2, lineType=8)
      for n in range(lip_order_num-1):
          cv2.line(frame, landmarks_lip[lip_order_dlib[1][n]], landmarks_lip[lip_order_dlib[1][n+1]], color=(0, 255, 0), thickness=2, lineType=8)
  cv2.imshow("face", frame)
  if cv2.waitKey(1) & 0xff == ord('q'):
      break
cap.release()
cv2.destroyAllWindows()
# check_call(['sudo', 'poweroff'])

 

3、實驗效果

樹莓派上利用python+opencv+dlib實現嘴唇檢測的實現

效果總體而言比較卡頓,感覺分析一張圖片花費時間在秒量級上。
要是僅僅是顯示攝像頭的圖片還是很快的,沒有任何卡頓,也就是說如果代碼中不存在rects = detector(gray, 1)這種獲取人臉區域的檢測命令,那么運行速度大大提高,后面需要思考怎么在人臉檢測下提高代碼運行速度。

到此這篇關于樹莓派上利用python+opencv+dlib實現嘴唇檢測的實現的文章就介紹到這了,更多相關python+opencv+dlib嘴唇檢測內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_43977647/article/details/121030114

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美猛男同志video在线 | 日本四虎影视 | 美女脱了内裤打开腿让男人图片 | 色人阁导航 | 免费看片黄 | 日本人欧美xx| 日本xxxxxx片免费播放18 | 91麻豆精品国产自产在线观看 | 99午夜高清在线视频在观看 | 欧美日韩精品亚洲精品v18 | 国产真实一区二区三区 | 2015小明台湾永久区域免费 | 亚洲大片在线观看 | 久久亚洲高清观看 | 无码人妻视频又大又粗欧美 | 四虎地址| 51香蕉视频| 国产成人欧美视频在线 | 网友自拍偷拍 | 厨房play黄瓜进去小说h | 99久久国产亚洲综合精品 | 日本不卡在线观看免费v | 国产自拍视频一区 | 亚洲国产剧情中文视频在线 | 91精品国产综合久久消防器材 | 息与子中文字幕在线 | 国产成人精品一区二三区 | 精品老司机在线视频香蕉 | 亚欧毛片基地国产毛片基地 | 国内精品久久久久影院网站 | 日韩hd高清xxxⅹ | 国内老司机精品视频在线播出 | 99ri国产在线观看 | 免费人成网址在线观看国内 | 91混血大战上海双胞胎 | 日本色淫| 精品国产品香蕉在线观看 | 日本在线看免费 | 亚洲黄色小视频 | 亚州在线播放 | 久久re这里精品在线视频7 |