最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

opencv+mediapipe實現(xiàn)人臉檢測及攝像頭實時示例

 更新時間:2021年12月30日 09:54:55   作者:墻縫里的草  
本文主要介紹了opencv+mediapipe實現(xiàn)人臉檢測及攝像頭實時,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

單張人臉關(guān)鍵點檢測

定義可視化圖像函數(shù)
導(dǎo)入三維人臉關(guān)鍵點檢測模型
導(dǎo)入可視化函數(shù)和可視化樣式
讀取圖像
將圖像模型輸入,獲取預(yù)測結(jié)果
BGR轉(zhuǎn)RGB
將RGB圖像輸入模型,獲取預(yù)測結(jié)果
預(yù)測人人臉個數(shù)
可視化人臉關(guān)鍵點檢測效果
繪制人來臉和重點區(qū)域輪廓線,返回annotated_image
繪制人臉輪廓、眼睫毛、眼眶、嘴唇
在三維坐標(biāo)中分別可視化人臉網(wǎng)格、輪廓、瞳孔

import cv2 as cv
import  mediapipe as mp
from tqdm import tqdm
import time
import  matplotlib.pyplot as plt

# 定義可視化圖像函數(shù)
def look_img(img):
    img_RGB=cv.cvtColor(img,cv.COLOR_BGR2RGB)
    plt.imshow(img_RGB)
    plt.show()

# 導(dǎo)入三維人臉關(guān)鍵點檢測模型
mp_face_mesh=mp.solutions.face_mesh
# help(mp_face_mesh.FaceMesh)

model=mp_face_mesh.FaceMesh(
    static_image_mode=True,#TRUE:靜態(tài)圖片/False:攝像頭實時讀取
    refine_landmarks=True,#使用Attention Mesh模型
    min_detection_confidence=0.5, #置信度閾值,越接近1越準(zhǔn)
    min_tracking_confidence=0.5,#追蹤閾值
)


# 導(dǎo)入可視化函數(shù)和可視化樣式
mp_drawing=mp.solutions.drawing_utils
mp_drawing_styles=mp.solutions.drawing_styles

# 讀取圖像

img=cv.imread('img.png')

# look_img(img)

# 將圖像模型輸入,獲取預(yù)測結(jié)果

# BGR轉(zhuǎn)RGB
img_RGB=cv.cvtColor(img,cv.COLOR_BGR2RGB)

# 將RGB圖像輸入模型,獲取預(yù)測結(jié)果

results=model.process(img_RGB)
# 預(yù)測人人臉個數(shù)
len(results.multi_face_landmarks)

print(len(results.multi_face_landmarks))

# 結(jié)果:1


# 可視化人臉關(guān)鍵點檢測效果

# 繪制人來臉和重點區(qū)域輪廓線,返回annotated_image
annotated_image=img.copy()
if results.multi_face_landmarks: #如果檢測出人臉
    for face_landmarks in results.multi_face_landmarks:#遍歷每一張臉
        #繪制人臉網(wǎng)格
        mp_drawing.draw_landmarks(
            image=annotated_image,
            landmark_list=face_landmarks,
            connections=mp_face_mesh.FACEMESH_TESSELATION,
            #landmark_drawing_spec為關(guān)鍵點可視化樣式,None為默認(rèn)樣式(不顯示關(guān)鍵點)
            # landmark_drawing_spec=mp_drawing_styles.DrawingSpec(thickness=1,circle_radius=2,color=[66,77,229]),
            landmark_drawing_spec=None,
            connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style()
        )
        #繪制人臉輪廓、眼睫毛、眼眶、嘴唇
        mp_drawing.draw_landmarks(
            image=annotated_image,
            landmark_list=face_landmarks,
            connections=mp_face_mesh.FACEMESH_CONTOURS,
            # landmark_drawing_spec為關(guān)鍵點可視化樣式,None為默認(rèn)樣式(不顯示關(guān)鍵點)
            # landmark_drawing_spec=mp_drawing_styles.DrawingSpec(thickness=1,circle_radius=2,color=[66,77,229]),
            landmark_drawing_spec=None,
            connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style()

        )
        #繪制瞳孔區(qū)域
        mp_drawing.draw_landmarks(
            image=annotated_image,
            landmark_list=face_landmarks,
            connections=mp_face_mesh.FACEMESH_IRISES,
            # landmark_drawing_spec為關(guān)鍵點可視化樣式,None為默認(rèn)樣式(不顯示關(guān)鍵點)
            landmark_drawing_spec=mp_drawing_styles.DrawingSpec(thickness=1,circle_radius=2,color=[128,256,229]),
            # landmark_drawing_spec=None,
            connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style()

        )

cv.imwrite('test.jpg',annotated_image)
look_img(annotated_image)
# 在三維坐標(biāo)中分別可視化人臉網(wǎng)格、輪廓、瞳孔
mp_drawing.plot_landmarks(results.multi_face_landmarks[0],mp_face_mesh.FACEMESH_TESSELATION)
mp_drawing.plot_landmarks(results.multi_face_landmarks[0],mp_face_mesh.FACEMESH_CONTOURS)
mp_drawing.plot_landmarks(results.multi_face_landmarks[0],mp_face_mesh.FACEMESH_IRISES)

請?zhí)砑訄D片描述

請?zhí)砑訄D片描述

請?zhí)砑訄D片描述

單張圖像人臉檢測

可以通過調(diào)用open3d實現(xiàn)3d模型建立,部分代碼與上面類似

import cv2 as cv
import  mediapipe as mp
import numpy as np
from tqdm import tqdm
import time
import  matplotlib.pyplot as plt

# 定義可視化圖像函數(shù)
def look_img(img):
    img_RGB=cv.cvtColor(img,cv.COLOR_BGR2RGB)
    plt.imshow(img_RGB)
    plt.show()

# 導(dǎo)入三維人臉關(guān)鍵點檢測模型
mp_face_mesh=mp.solutions.face_mesh
# help(mp_face_mesh.FaceMesh)

model=mp_face_mesh.FaceMesh(
    static_image_mode=True,#TRUE:靜態(tài)圖片/False:攝像頭實時讀取
    refine_landmarks=True,#使用Attention Mesh模型
    max_num_faces=40,
    min_detection_confidence=0.2, #置信度閾值,越接近1越準(zhǔn)
    min_tracking_confidence=0.5,#追蹤閾值
)


# 導(dǎo)入可視化函數(shù)和可視化樣式
mp_drawing=mp.solutions.drawing_utils
# mp_drawing_styles=mp.solutions.drawing_styles
draw_spec=mp_drawing.DrawingSpec(thickness=2,circle_radius=1,color=[223,155,6])
# 讀取圖像

img=cv.imread('../人臉三維關(guān)鍵點檢測/dkx.jpg')
# width=img1.shape[1]
# height=img1.shape[0]
# img=cv.resize(img1,(width*10,height*10))
# look_img(img)

# 將圖像模型輸入,獲取預(yù)測結(jié)果

# BGR轉(zhuǎn)RGB
img_RGB=cv.cvtColor(img,cv.COLOR_BGR2RGB)

# 將RGB圖像輸入模型,獲取預(yù)測結(jié)果

results=model.process(img_RGB)
# # 預(yù)測人人臉個數(shù)
# len(results.multi_face_landmarks)
#
# print(len(results.multi_face_landmarks))

if results.multi_face_landmarks:
    for face_landmarks  in results.multi_face_landmarks:
        mp_drawing.draw_landmarks(
            image=img,
            landmark_list=face_landmarks,
            connections=mp_face_mesh.FACEMESH_CONTOURS,
            landmark_drawing_spec=draw_spec,
            connection_drawing_spec=draw_spec
        )
else:
    print('未檢測出人臉')
look_img(img)
mp_drawing.plot_landmarks(results.multi_face_landmarks[0],mp_face_mesh.FACEMESH_TESSELATION)
mp_drawing.plot_landmarks(results.multi_face_landmarks[1],mp_face_mesh.FACEMESH_CONTOURS)
mp_drawing.plot_landmarks(results.multi_face_landmarks[1],mp_face_mesh.FACEMESH_IRISES)


# 交互式三維可視化
coords=np.array(results.multi_face_landmarks[0].landmark)
# print(len(coords))
# print(coords)

def get_x(each):
    return each.x
def get_y(each):
    return each.y
def get_z(each):
    return each.z

# 分別獲取所有關(guān)鍵點的XYZ坐標(biāo)

points_x=np.array(list(map(get_x,coords)))
points_y=np.array(list(map(get_y,coords)))
points_z=np.array(list(map(get_z,coords)))

# 將三個方向的坐標(biāo)合并
points=np.vstack((points_x,points_y,points_z)).T
print(points.shape)

import open3d
point_cloud=open3d.geometry.PointCloud()
point_cloud.points=open3d.utility.Vector3dVector(points)
open3d.visualization.draw_geometries([point_cloud])

請?zhí)砑訄D片描述

這是建立的3d的可視化模型,可以通過鼠標(biāo)拖動將其旋轉(zhuǎn)

攝像頭實時關(guān)鍵點檢測

定義可視化圖像函數(shù)
導(dǎo)入三維人臉關(guān)鍵點檢測模型
導(dǎo)入可視化函數(shù)和可視化樣式
讀取單幀函數(shù)
主要代碼和上面的圖像類似

import cv2 as cv
import  mediapipe as mp
from tqdm import tqdm
import time
import  matplotlib.pyplot as plt


# 導(dǎo)入三維人臉關(guān)鍵點檢測模型
mp_face_mesh=mp.solutions.face_mesh
# help(mp_face_mesh.FaceMesh)

model=mp_face_mesh.FaceMesh(
    static_image_mode=False,#TRUE:靜態(tài)圖片/False:攝像頭實時讀取
    refine_landmarks=True,#使用Attention Mesh模型
    max_num_faces=5,#最多檢測幾張人臉
    min_detection_confidence=0.5, #置信度閾值,越接近1越準(zhǔn)
    min_tracking_confidence=0.5,#追蹤閾值
)


# 導(dǎo)入可視化函數(shù)和可視化樣式
mp_drawing=mp.solutions.drawing_utils
mp_drawing_styles=mp.solutions.drawing_styles

# 處理單幀的函數(shù)

def process_frame(img):
    #記錄該幀處理的開始時間
    start_time=time.time()
    img_RGB=cv.cvtColor(img,cv.COLOR_BGR2RGB)
    results=model.process(img_RGB)
    if results.multi_face_landmarks:
        for face_landmarks in results.multi_face_landmarks:
            # mp_drawing.draw_detection(
            #  image=img,
            # landmarks_list=face_landmarks,
            # connections=mp_face_mesh.FACEMESH_TESSELATION,
            # landmarks_drawing_spec=None,
            # landmarks_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style()
            # )

            # 繪制人臉網(wǎng)格
            mp_drawing.draw_landmarks(
                image=img,
                landmark_list=face_landmarks,
                connections=mp_face_mesh.FACEMESH_TESSELATION,
                # landmark_drawing_spec為關(guān)鍵點可視化樣式,None為默認(rèn)樣式(不顯示關(guān)鍵點)
                # landmark_drawing_spec=mp_drawing_styles.DrawingSpec(thickness=1,circle_radius=2,color=[66,77,229]),
                landmark_drawing_spec=None,
                connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style()
            )
            # 繪制人臉輪廓、眼睫毛、眼眶、嘴唇
            mp_drawing.draw_landmarks(
                image=img,
                landmark_list=face_landmarks,
                connections=mp_face_mesh.FACEMESH_CONTOURS,
                # landmark_drawing_spec為關(guān)鍵點可視化樣式,None為默認(rèn)樣式(不顯示關(guān)鍵點)
                # landmark_drawing_spec=mp_drawing_styles.DrawingSpec(thickness=1,circle_radius=2,color=[66,77,229]),
                landmark_drawing_spec=None,
                connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style()

            )
            # 繪制瞳孔區(qū)域
            mp_drawing.draw_landmarks(
                image=img,
                landmark_list=face_landmarks,
                connections=mp_face_mesh.FACEMESH_IRISES,
                # landmark_drawing_spec為關(guān)鍵點可視化樣式,None為默認(rèn)樣式(不顯示關(guān)鍵點)
                # landmark_drawing_spec=mp_drawing_styles.DrawingSpec(thickness=1, circle_radius=2, color=[0, 1, 128]),

                landmark_drawing_spec=None,
                connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style())
    else:
        img = cv.putText(img, 'NO FACE DELECTED', (25 , 50 ), cv.FONT_HERSHEY_SIMPLEX, 1.25,
                         (218, 112, 214), 1, 8)


    #記錄該幀處理完畢的時間
    end_time=time.time()
    #計算每秒處理圖像的幀數(shù)FPS
    FPS=1/(end_time-start_time)
    scaler=1
    img=cv.putText(img,'FPS'+str(int(FPS)),(25*scaler,100*scaler),cv.FONT_HERSHEY_SIMPLEX,1.25*scaler,(0,0,255),1,8)
    return img


# 調(diào)用攝像頭
cap=cv.VideoCapture(0)

cap.open(0)
# 無限循環(huán),直到break被觸發(fā)
while cap.isOpened():
    success,frame=cap.read()
    # if not success:
    #     print('ERROR')
    #     break
    frame=process_frame(frame)
    #展示處理后的三通道圖像
    cv.imshow('my_window',frame)
    if cv.waitKey(1) &0xff==ord('q'):
        break

cap.release()
cv.destroyAllWindows()

到此這篇關(guān)于opencv+mediapipe實現(xiàn)人臉檢測及攝像頭實時的文章就介紹到這了,更多相關(guān)opencv 人臉檢測及攝像頭實時內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中的for循環(huán)

    python中的for循環(huán)

    Python for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。這篇文章主要介紹了python的for循環(huán),需要的朋友可以參考下
    2018-09-09
  • python繪圖時,坐標(biāo)軸負(fù)號顯示不出來的解決

    python繪圖時,坐標(biāo)軸負(fù)號顯示不出來的解決

    這篇文章主要介紹了python繪圖時,坐標(biāo)軸負(fù)號顯示不出來的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python利用Matplotlib繪制柱狀圖(豎直柱狀圖和水平柱狀圖)、直方圖和餅狀圖

    Python利用Matplotlib繪制柱狀圖(豎直柱狀圖和水平柱狀圖)、直方圖和餅狀圖

    這篇文章主要給大家介紹了關(guān)于Python利用Matplotlib繪制柱狀圖(豎直柱狀圖和水平柱狀圖)、直方圖和餅狀圖的相關(guān)資料,Python使用matplotlib畫圖是非常方便的,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • python實現(xiàn)圖像隨機(jī)裁剪的示例代碼

    python實現(xiàn)圖像隨機(jī)裁剪的示例代碼

    這篇文章主要介紹了python實現(xiàn)圖像隨機(jī)裁剪的示例代碼,幫助大家更好的理解和使用python處理圖片,感興趣的朋友可以了解下
    2020-12-12
  • Pandas時間類型轉(zhuǎn)換與處理的實現(xiàn)示例

    Pandas時間類型轉(zhuǎn)換與處理的實現(xiàn)示例

    本文主要介紹了Pandas時間類型轉(zhuǎn)換與處理的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • pygame游戲之旅 添加碰撞效果的方法

    pygame游戲之旅 添加碰撞效果的方法

    這篇文章主要為大家詳細(xì)介紹了pygame游戲之旅的第7篇,教大家如何添加碰撞的效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python對象中__del__方法起作用的條件詳解

    Python對象中__del__方法起作用的條件詳解

    今天小編就為大家分享一篇Python對象中__del__方法起作用的條件詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python采集王者皮膚圖片實戰(zhàn)示例

    Python采集王者皮膚圖片實戰(zhàn)示例

    這篇文章主要為大家介紹了Python采集王者皮膚圖片實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • python中使用pyhook實現(xiàn)鍵盤監(jiān)控的例子

    python中使用pyhook實現(xiàn)鍵盤監(jiān)控的例子

    這篇文章主要介紹了python中使用pyhook實現(xiàn)鍵盤監(jiān)控的例子,包含pyhook的下載地址和手冊地址及一個Windows下的監(jiān)控實例,需要的朋友可以參考下
    2014-07-07
  • Python新手最容易踩的坑及避坑指南

    Python新手最容易踩的坑及避坑指南

    學(xué)習(xí)Python時新手可能會遇到縮進(jìn)錯誤、忘記引入模塊、使用未定義的變量、變量作用域理解不當(dāng)、字符串格式化錯誤等問題,本文詳細(xì)介紹了這些常見陷阱及其解決方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10

最新評論

溧阳市| 云浮市| 北宁市| 通海县| 红安县| 宁津县| 师宗县| 原平市| 涡阳县| 普宁市| 镇坪县| 同仁县| 施秉县| 藁城市| 甘南县| 合肥市| 新龙县| 淳化县| 堆龙德庆县| 肥乡县| 明水县| 临沭县| 五河县| 图片| 读书| 东兰县| 五华县| 荃湾区| 洛隆县| 南川市| 遵义县| 阳东县| 东阳市| 永嘉县| 临城县| 临沭县| 云南省| 柏乡县| 修水县| 遵化市| 新丰县|