怎樣查看網(wǎng)站服務(wù)商seo領(lǐng)導屋
文章目錄
- dlib庫是什么?
- OpenCV庫與dlib庫對比
- dlib庫安裝
- dlib——人臉應(yīng)用實例——人臉檢測
- dlib——人臉應(yīng)用實例——人臉關(guān)鍵點定位
- dlib——人臉應(yīng)用實例——人臉輪廓繪制
dlib庫是什么?
OpenCV庫與dlib庫對比
dlib庫安裝
dlib——人臉應(yīng)用實例——人臉檢測
對圖片中的人臉進行檢測:
代碼:
# 導入OpenCV庫,它是一個廣泛用于計算機視覺任務(wù)的庫,可用于圖像讀取、處理和顯示等操作
import cv2
# 導入dlib庫,dlib是一個強大的機器學習工具包,提供了多種人臉檢測和特征提取的功能
import dlib# 創(chuàng)建一個dlib的人臉檢測器對象
# get_frontal_face_detector() 是dlib提供的預(yù)訓練好的人臉檢測器,用于檢測圖像中的人臉
detector = dlib.get_frontal_face_detector()# 使用OpenCV的imread函數(shù)讀取指定路徑的圖像文件
# 'hezhao.jpg' 是圖像文件的路徑,這里假設(shè)該圖像文件與代碼文件在同一目錄下
# 讀取后的圖像以NumPy數(shù)組的形式存儲在變量 img 中
img = cv2.imread('hezhao.jpg')# 使用人臉檢測器對讀取的圖像進行人臉檢測
# 第二個參數(shù) 2 表示對圖像進行2次上采樣,上采樣可以提高小尺寸人臉的檢測精度,但會增加計算量
# 檢測結(jié)果存儲在變量 faces 中,它是一個包含所有檢測到的人臉區(qū)域的列表
faces = detector(img, 2)# 遍歷檢測到的所有人臉
for face in faces:# 獲取當前人臉區(qū)域的左邊界坐標x1 = face.left()# 獲取當前人臉區(qū)域的上邊界坐標y1 = face.top()# 獲取當前人臉區(qū)域的右邊界坐標x2 = face.right()# 獲取當前人臉區(qū)域的下邊界坐標y2 = face.bottom()# 使用OpenCV的rectangle函數(shù)在圖像上繪制矩形框來標記檢測到的人臉# 第一個參數(shù) img 是要繪制矩形框的圖像# 第二個參數(shù) (x1, y1) 是矩形框的左上角坐標# 第三個參數(shù) (x2, y2) 是矩形框的右下角坐標# 第四個參數(shù) (0, 255, 0) 表示矩形框的顏色,這里是綠色(BGR格式)# 第五個參數(shù) 2 表示矩形框的線寬cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)# 使用OpenCV的imshow函數(shù)顯示處理后的圖像
# 第一個參數(shù) 'result' 是顯示圖像的窗口名稱
# 第二個參數(shù) img 是要顯示的圖像
cv2.imshow('result', img)# 使用OpenCV的waitKey函數(shù)等待用戶按鍵
# 參數(shù) 0 表示無限等待,直到用戶按下任意鍵
cv2.waitKey(0)# 使用OpenCV的destroyAllWindows函數(shù)關(guān)閉所有由OpenCV打開的窗口
cv2.destroyAllWindows()
結(jié)果:
也可對視頻或使用攝像頭中的人臉識別:
代碼:
# 導入OpenCV庫,它是一個強大的計算機視覺庫,可用于視頻捕獲、圖像處理和顯示等操作
import cv2
# 導入dlib庫,dlib是一個機器學習工具包,提供了預(yù)訓練的人臉檢測模型
import dlib# 創(chuàng)建一個dlib的人臉檢測器對象,用于檢測圖像或視頻幀中的人臉
# get_frontal_face_detector() 是dlib提供的預(yù)訓練好的正面人臉檢測器
detector = dlib.get_frontal_face_detector()# 使用OpenCV的VideoCapture函數(shù)打開默認攝像頭(設(shè)備編號為0)
# cap 是一個VideoCapture對象,用于后續(xù)讀取視頻幀
cap = cv2.VideoCapture(0)# 進入一個無限循環(huán),持續(xù)處理攝像頭捕獲的視頻幀
while True:# 從攝像頭讀取一幀視頻# ret 是一個布爾值,表示是否成功讀取到視頻幀# image 是讀取到的視頻幀,以NumPy數(shù)組的形式存儲ret, image = cap.read()# 對讀取的視頻幀進行水平翻轉(zhuǎn)# 第二個參數(shù) 1 表示水平翻轉(zhuǎn),這樣可以讓畫面看起來更符合我們的習慣img = cv2.flip(image, 1)# 如果 ret 為 None 或者 False,說明沒有成功讀取到視頻幀# 這種情況可能是由于攝像頭斷開連接、視頻結(jié)束等原因?qū)е碌?/span># 此時跳出循環(huán),結(jié)束程序if ret is None:break# 使用人臉檢測器對當前視頻幀進行人臉檢測# 第二個參數(shù) 1 表示對圖像進行1次上采樣,上采樣可以提高小尺寸人臉的檢測精度,但會增加計算量# faces 是一個包含所有檢測到的人臉區(qū)域的列表faces = detector(img, 1)# 遍歷檢測到的所有人臉for face in faces:# 獲取當前人臉區(qū)域的左邊界坐標x1 = face.left()# 獲取當前人臉區(qū)域的上邊界坐標y1 = face.top()# 獲取當前人臉區(qū)域的右邊界坐標x2 = face.right()# 獲取當前人臉區(qū)域的下邊界坐標y2 = face.bottom()# 在視頻幀上繪制矩形框來標記檢測到的人臉# 第一個參數(shù) img 是要繪制矩形框的圖像# 第二個參數(shù) (x1, y1) 是矩形框的左上角坐標# 第三個參數(shù) (x2, y2) 是矩形框的右下角坐標# 第四個參數(shù) (0, 255, 0) 表示矩形框的顏色,這里是綠色(BGR格式)# 第五個參數(shù) 2 表示矩形框的線寬cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)# 顯示處理后的視頻幀# 第一個參數(shù) 'result' 是顯示窗口的名稱# 第二個參數(shù) img 是要顯示的視頻幀cv2.imshow('result', img)# 等待用戶按鍵,等待時間為1毫秒# key 是用戶按下鍵的ASCII碼值key = cv2.waitKey(1)# 如果用戶按下的鍵是ESC鍵(ASCII碼值為27)# 則跳出循環(huán),結(jié)束程序if key == 27:break# 釋放攝像頭資源,關(guān)閉攝像頭設(shè)備
cap.release()# 關(guān)閉所有由OpenCV打開的窗口
cv2.destroyAllWindows()
dlib——人臉應(yīng)用實例——人臉關(guān)鍵點定位
通過https://github.com/davisking/dlib-models下載所需要的預(yù)訓練模型,對圖片進行人臉關(guān)鍵點定位。讀取一張圖像,檢測其中的人臉,并在每個人臉的 68 個特征點上繪制綠色圓形標記,同時在標記旁邊顯示特征點的索引編號,最后顯示處理后的圖像。
代碼:
# 導入NumPy庫,用于進行高效的數(shù)值計算,這里主要用于處理面部特征點的數(shù)組
import numpy as np
# 導入OpenCV庫,用于圖像處理和計算機視覺任務(wù),如讀取圖像、繪制圖形和顯示圖像等
import cv2
# 導入dlib庫,它是一個強大的機器學習庫,這里主要用于人臉檢測和面部特征點定位
import dlib# 使用OpenCV的imread函數(shù)讀取指定路徑的圖像文件,將其存儲為一個NumPy數(shù)組
# "c_luo1.png" 是圖像文件的路徑,你可以根據(jù)實際情況修改
img = cv2.imread("c_luo1.png")# 創(chuàng)建一個dlib的人臉檢測器對象,用于檢測圖像中的人臉
# get_frontal_face_detector() 是dlib提供的一個預(yù)訓練的人臉檢測器
detector = dlib.get_frontal_face_detector()# 使用人臉檢測器對輸入圖像進行人臉檢測
# 第二個參數(shù)0表示不進行圖像的上采樣,若為正數(shù)則會對圖像進行上采樣以提高檢測精度,但會增加計算量
faces = detector(img, 0)# 創(chuàng)建一個dlib的面部特征點預(yù)測器對象,用于定位人臉的68個特征點
# 'shape_predictor_68_face_landmarks.dat' 是預(yù)訓練的特征點預(yù)測模型文件,需要提前下載
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')# 遍歷檢測到的所有人臉
for face in faces:# 使用面部特征點預(yù)測器對當前人臉進行特征點定位# 輸入?yún)?shù)為圖像和檢測到的人臉區(qū)域shape = predictor(img, face)# 將dlib的特征點對象轉(zhuǎn)換為NumPy數(shù)組,方便后續(xù)處理# shape.parts() 返回一個包含68個特征點的對象,每個特征點有x和y坐標# 通過列表推導式將每個特征點的x和y坐標提取出來,存儲為一個二維NumPy數(shù)組landmarks = np.array([[p.x, p.y] for p in shape.parts()])# 遍歷每個特征點for idx, point in enumerate(landmarks):# 提取當前特征點的x和y坐標,存儲為一個列表pos = [point[0], point[1]]# 使用OpenCV的circle函數(shù)在圖像上繪制一個圓形標記特征點# img 是要繪制的圖像,pos 是圓心坐標,2 是圓的半徑# color=(0, 255, 0) 表示圓的顏色為綠色,thickness=-1 表示填充整個圓形cv2.circle(img, pos, 2, color=(0, 255, 0), thickness=-1)# 使用OpenCV的putText函數(shù)在特征點旁邊繪制特征點的索引編號# str(idx) 是要繪制的文本,即特征點的索引編號# pos 是文本的起始位置,cv2.FONT_HERSHEY_SIMPLEX 是字體樣式# 0.4 是字體大小,(255, 255, 255) 是文本顏色為白色# 1 是文本的線寬,cv2.LINE_AA 表示使用抗鋸齒線以提高文本的繪制質(zhì)量cv2.putText(img, str(idx), pos, cv2.FONT_HERSHEY_SIMPLEX, 0.4,(255, 255, 255), 1, cv2.LINE_AA)# 使用OpenCV的imshow函數(shù)顯示處理后的圖像
# 'img' 是窗口的名稱,img 是要顯示的圖像
cv2.imshow('img', img)# 使用OpenCV的waitKey函數(shù)等待用戶按鍵
# 參數(shù)0表示無限等待,直到用戶按下任意鍵
cv2.waitKey(0)# 使用OpenCV的destroyAllWindows函數(shù)關(guān)閉所有打開的窗口
cv2.destroyAllWindows()
結(jié)果:
也可以對視頻或者使用攝像頭直接識別人臉然后直接進行人臉關(guān)鍵點的定位:
代碼:
# 導入NumPy庫,它是Python中用于科學計算的基礎(chǔ)庫,這里主要用于處理數(shù)組數(shù)據(jù),比如面部特征點的坐標數(shù)組
import numpy as np
# 導入OpenCV庫,這是一個強大的計算機視覺庫,用于視頻捕獲、圖像處理、繪制圖形等操作
import cv2
# 導入dlib庫,它是一個機器學習工具包,提供了很多用于人臉檢測和特征點定位的預(yù)訓練模型
import dlib# 使用cv2.VideoCapture函數(shù)打開默認的攝像頭(設(shè)備編號為0),返回一個VideoCapture對象
# 后續(xù)可以通過該對象讀取攝像頭的視頻幀
cap = cv2.VideoCapture(0)# 創(chuàng)建一個dlib的面部特征點預(yù)測器對象
# 'shape_predictor_68_face_landmarks.dat' 是預(yù)訓練好的模型文件,用于檢測人臉的68個特征點
# 這個文件需要提前下載并放在代碼可訪問的路徑下
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')# 創(chuàng)建一個dlib的人臉檢測器對象
# get_frontal_face_detector() 是dlib提供的一個預(yù)訓練的人臉檢測器,用于在圖像中檢測人臉
detector = dlib.get_frontal_face_detector()# 進入一個無限循環(huán),持續(xù)讀取攝像頭的視頻幀并進行處理
while True:# 使用cap.read()方法從攝像頭讀取一幀視頻# ret 是一個布爾值,表示是否成功讀取到視頻幀# image 是讀取到的視頻幀,是一個NumPy數(shù)組ret, image = cap.read()# 使用cv2.flip函數(shù)對讀取到的視頻幀進行水平翻轉(zhuǎn)# 第二個參數(shù)1表示水平翻轉(zhuǎn),這樣可以讓畫面看起來更符合我們的習慣img = cv2.flip(image, 1)# 如果ret為False,說明沒有成功讀取到視頻幀,可能是攝像頭斷開連接等原因# 此時跳出循環(huán),結(jié)束程序if ret is None:break# 使用人臉檢測器對當前視頻幀進行人臉檢測# 第二個參數(shù)0表示不進行圖像的上采樣,若為正數(shù)則會對圖像進行上采樣以提高檢測精度,但會增加計算量faces = detector(img, 0)# 遍歷檢測到的所有人臉for face in faces:# 使用面部特征點預(yù)測器對當前人臉進行特征點定位# 輸入?yún)?shù)為當前視頻幀和檢測到的人臉區(qū)域shape = predictor(img, face)# 將dlib的特征點對象轉(zhuǎn)換為NumPy數(shù)組,方便后續(xù)處理# shape.parts() 返回一個包含68個特征點的對象,每個特征點有x和y坐標# 通過列表推導式將每個特征點的x和y坐標提取出來,存儲為一個二維NumPy數(shù)組landmarks = np.array([[p.x, p.y] for p in shape.parts()])# 遍歷每個特征點for idx, point in enumerate(landmarks):# 提取當前特征點的x和y坐標,存儲為一個列表pos = [point[0], point[1]]# 使用cv2.circle函數(shù)在圖像上繪制一個圓形標記特征點# img 是要繪制的圖像,pos 是圓心坐標,2 是圓的半徑# color=(0, 255, 0) 表示圓的顏色為綠色,thickness=-1 表示填充整個圓形cv2.circle(img, pos, 2, color=(0, 255, 0), thickness=-1)# 使用cv2.putText函數(shù)在特征點旁邊繪制特征點的索引編號# str(idx) 是要繪制的文本,即特征點的索引編號# pos 是文本的起始位置,cv2.FONT_HERSHEY_SIMPLEX 是字體樣式# 0.4 是字體大小,(255, 255, 255) 是文本顏色為白色# 1 是文本的線寬,cv2.LINE_AA 表示使用抗鋸齒線以提高文本的繪制質(zhì)量cv2.putText(img, str(idx), pos, cv2.FONT_HERSHEY_SIMPLEX, 0.4,(255, 255, 255), 1, cv2.LINE_AA)# 使用cv2.imshow函數(shù)顯示處理后的視頻幀# 'img' 是窗口的名稱,img 是要顯示的圖像cv2.imshow('img', img)# 使用cv2.waitKey函數(shù)等待用戶按鍵,參數(shù)1表示等待1毫秒# 返回值key是用戶按下鍵的ASCII碼值key = cv2.waitKey(1)# 如果用戶按下的鍵是ESC鍵(ASCII碼值為27),則跳出循環(huán),結(jié)束程序if key == 27:break# 釋放攝像頭資源,關(guān)閉攝像頭設(shè)備
cap.release()# 關(guān)閉所有由OpenCV打開的窗口
cv2.destroyAllWindows()
可以自己進行嘗試,也可從網(wǎng)站下載其他功能的預(yù)訓練模型進行測試
dlib——人臉應(yīng)用實例——人臉輪廓繪制
對人臉的輪廓進行繪制是基于關(guān)鍵點檢測的基礎(chǔ)上進行的,更能體現(xiàn)出人臉的特征與表情變化。
代碼:
# 導入NumPy庫,用于高效處理多維數(shù)組和矩陣運算,這里主要用于處理面部特征點的坐標數(shù)據(jù)
import numpy as np
# 導入OpenCV庫,用于圖像處理、繪制圖形和顯示圖像等操作
import cv2
# 導入dlib庫,它是一個機器學習工具包,提供了人臉檢測和面部特征點定位的功能
import dlib# 定義一個函數(shù),用于在圖像上繪制線段,連接一系列面部特征點
def drawLine(start, end):# 從shape數(shù)組中提取從start到end(不包含end)的特征點pts = shape[start:end]# 遍歷提取的特征點for l in range(1, len(pts)):# 獲取前一個特征點的坐標,并轉(zhuǎn)換為元組形式ptA = tuple(pts[l - 1])# 獲取當前特征點的坐標,并轉(zhuǎn)換為元組形式ptB = tuple(pts[l])# 使用OpenCV的line函數(shù)在圖像上繪制從ptA到ptB的線段# img是要繪制的圖像,ptA和ptB是線段的起點和終點,(0, 255, 0)是線段的顏色(綠色),2是線段的線寬cv2.line(img, ptA, ptB, (0, 255, 0), 2)# 定義一個函數(shù),用于在圖像上繪制凸包,連接一系列面部特征點形成封閉的凸多邊形
def drawConvexHull(start, end):# 從shape數(shù)組中提取從start到end(包含end)的特征點Facial = shape[start:end + 1]# 使用OpenCV的convexHull函數(shù)計算這些特征點的凸包mouthHull = cv2.convexHull(Facial)# 使用OpenCV的drawContours函數(shù)在圖像上繪制凸包輪廓# img是要繪制的圖像,[mouthHull]是包含凸包輪廓的列表,-1表示繪制所有輪廓,(0, 255, 0)是輪廓的顏色(綠色),2是輪廓的線寬cv2.drawContours(img, [mouthHull], -1, (0, 255, 0), 2)# 使用OpenCV的imread函數(shù)讀取指定路徑的圖像文件
# "c_luo1.png" 是圖像文件的路徑,你可以根據(jù)實際情況修改
img = cv2.imread("c_luo1.png")
# 創(chuàng)建一個dlib的人臉檢測器對象,用于檢測圖像中的人臉
detector = dlib.get_frontal_face_detector()
# 使用人臉檢測器對輸入圖像進行人臉檢測
# 第二個參數(shù)0表示不進行圖像的上采樣,若為正數(shù)則會對圖像進行上采樣以提高檢測精度,但會增加計算量
faces = detector(img, 0)
# 創(chuàng)建一個dlib的面部特征點預(yù)測器對象,用于定位人臉的68個特征點
# 'shape_predictor_68_face_landmarks.dat' 是預(yù)訓練的特征點預(yù)測模型文件,需要提前下載
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')# 遍歷檢測到的所有人臉
for face in faces:# 使用面部特征點預(yù)測器對當前人臉進行特征點定位shape = predictor(img, face)# 將dlib的特征點對象轉(zhuǎn)換為NumPy數(shù)組,方便后續(xù)處理# shape.parts() 返回一個包含68個特征點的對象,每個特征點有x和y坐標# 通過列表推導式將每個特征點的x和y坐標提取出來,存儲為一個二維NumPy數(shù)組shape = np.array([[p.x, p.y] for p in shape.parts()])# 繪制左眼的凸包drawConvexHull(36, 41)# 繪制右眼的凸包drawConvexHull(42, 47)# 繪制外嘴唇的凸包drawConvexHull(48, 59)# 繪制內(nèi)嘴唇的凸包drawConvexHull(60, 67)# 繪制下巴的線段drawLine(0, 16)# 繪制左眉毛的線段drawLine(17, 21)# 繪制右眉毛的線段drawLine(22, 26)# 繪制鼻子的線段drawLine(27, 35)# 使用OpenCV的imshow函數(shù)顯示處理后的圖像
# 'img' 是窗口的名稱,img 是要顯示的圖像
cv2.imshow('img', img)
# 使用OpenCV的waitKey函數(shù)等待用戶按鍵
# 參數(shù)0表示無限等待,直到用戶按下任意鍵
cv2.waitKey(0)
# 使用OpenCV的destroyAllWindows函數(shù)關(guān)閉所有打開的窗口
cv2.destroyAllWindows()
對視頻內(nèi)容進行處理的代碼:
# 導入NumPy庫,用于進行高效的數(shù)值計算和數(shù)組操作,后續(xù)會用來處理面部特征點的坐標數(shù)據(jù)
import numpy as np
# 導入OpenCV庫,這是一個強大的計算機視覺庫,可用于視頻捕獲、圖像處理、繪制圖形等操作
import cv2
# 導入dlib庫,它是一個機器學習工具包,提供了預(yù)訓練的人臉檢測和面部特征點定位模型
import dlib# 定義一個函數(shù),用于在圖像上繪制一系列線段,連接指定范圍內(nèi)的面部特征點
def drawLine(start, end):# 從 shape 數(shù)組中提取從 start 到 end(不包含 end)索引位置的特征點pts = shape[start:end]# 遍歷提取的特征點,從第二個點開始for l in range(1, len(pts)):# 獲取前一個特征點的坐標,并將其轉(zhuǎn)換為元組形式,因為 cv2.line 函數(shù)要求坐標為元組ptA = tuple(pts[l - 1])# 獲取當前特征點的坐標,并將其轉(zhuǎn)換為元組形式ptB = tuple(pts[l])# 在圖像 img 上繪制從 ptA 到 ptB 的線段# (0, 255, 0) 表示線段的顏色為綠色(在OpenCV中顏色采用BGR格式),2 表示線段的線寬cv2.line(img, ptA, ptB, (0, 255, 0), 2)# 定義一個函數(shù),用于在圖像上繪制凸包,連接指定范圍內(nèi)的面部特征點形成封閉的凸多邊形
def drawConvexHull(start, end):# 從 shape 數(shù)組中提取從 start 到 end(包含 end)索引位置的特征點Facial = shape[start:end + 1]# 使用 cv2.convexHull 函數(shù)計算這些特征點的凸包,返回一個包含凸包頂點坐標的數(shù)組mouthHull = cv2.convexHull(Facial)# 在圖像 img 上繪制凸包輪廓# [mouthHull] 表示要繪制的輪廓列表,-1 表示繪制所有輪廓,(0, 255, 0) 是輪廓顏色(綠色),2 是輪廓線寬cv2.drawContours(img, [mouthHull], -1, (0, 255, 0), 2)# 打開默認的攝像頭設(shè)備(設(shè)備編號為 0),返回一個 VideoCapture 對象,用于后續(xù)視頻幀的讀取
cap = cv2.VideoCapture(0)
# 創(chuàng)建一個 dlib 的面部特征點預(yù)測器對象,使用預(yù)訓練的 68 點面部特征模型文件
# 該文件需要提前下載并放在代碼可訪問的路徑下
predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')
# 創(chuàng)建一個 dlib 的人臉檢測器對象,用于檢測圖像或視頻幀中的人臉
detector = dlib.get_frontal_face_detector()# 進入一個無限循環(huán),持續(xù)處理攝像頭捕獲的視頻幀
while True:# 從攝像頭讀取一幀視頻# ret 是一個布爾值,表示是否成功讀取到視頻幀# image 是讀取到的視頻幀,以 NumPy 數(shù)組的形式存儲ret, image = cap.read()# 對讀取的視頻幀進行水平翻轉(zhuǎn),這樣可以讓畫面看起來更符合我們的習慣img = cv2.flip(image, 1)# 如果 ret 為 None 或者 False,說明沒有成功讀取到視頻幀# 可能是攝像頭斷開連接等原因,此時跳出循環(huán),結(jié)束程序if ret is None:break# 使用人臉檢測器對當前視頻幀進行人臉檢測# 第二個參數(shù) 0 表示不進行圖像的上采樣,若為正數(shù)則會對圖像進行上采樣以提高檢測精度,但會增加計算量faces = detector(img, 0)# 遍歷檢測到的所有人臉for face in faces:# 使用面部特征點預(yù)測器對當前人臉進行特征點定位shape = predictor(img, face)# 將 dlib 的特征點對象轉(zhuǎn)換為 NumPy 數(shù)組,方便后續(xù)處理# shape.parts() 返回一個包含 68 個特征點的對象,每個特征點有 x 和 y 坐標# 通過列表推導式將每個特征點的 x 和 y 坐標提取出來,存儲為一個二維 NumPy 數(shù)組shape = np.array([[p.x, p.y] for p in shape.parts()])# 繪制左眼的凸包drawConvexHull(36, 41)# 繪制右眼的凸包drawConvexHull(42, 47)# 繪制外嘴唇的凸包drawConvexHull(48, 59)# 繪制內(nèi)嘴唇的凸包drawConvexHull(60, 67)# 繪制下巴的線段drawLine(0, 16)# 繪制左眉毛的線段drawLine(17, 21)# 繪制右眉毛的線段drawLine(22, 26)# 繪制鼻子的線段drawLine(27, 35)# 在窗口中顯示處理后的視頻幀,窗口名稱為 'img'cv2.imshow('img', img)# 等待用戶按鍵,等待時間為 1 毫秒# key 是用戶按下鍵的 ASCII 碼值key = cv2.waitKey(1)# 如果用戶按下的鍵是 ESC 鍵(ASCII 碼值為 27),則跳出循環(huán),結(jié)束程序if key == 27:break# 釋放攝像頭資源,關(guān)閉攝像頭設(shè)備
cap.release()
# 關(guān)閉所有由 OpenCV 打開的窗口
cv2.destroyAllWindows()