python 人臉關鍵點檢測_opencv+python+dlib人臉關鍵點檢測、實時檢測

安裝的是anaconde3、python3.7.3,3.7環境安裝dlib太麻煩,

在anaconde3中新建環境python3.6.8,

在3.6環境下安裝dlib-19.6.1-cp36-cp36m-win_amd64.whl,下載地址:https://pypi.org/project/dlib/19.6.1/#files

vscode更改配置

其中shape_predictor_68_face_landmarks.dat官方訓練數據下載地址:http://dlib.net/files/,里面還有5點模型。

效果圖如下:

# _*_ coding:utf-8 _*_

import numpy as np

import cv2

import dlib

detector = dlib.get_frontal_face_detector()

predictor = dlib.shape_predictor("data/shape_predictor_68_face_landmarks.dat")

# cv2讀取圖像

img = cv2.imread("img/test3.jpg")

# 取灰度

img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

# 人臉數rects

rects = detector(img_gray, 0)

for i in range(len(rects)):

landmarks = np.matrix([[p.x, p.y] for p in predictor(img, rects[i]).parts()])

for idx, point in enumerate(landmarks):

# 68點的坐標

pos = (point[0, 0], point[0, 1])

# 利用cv2.circle給每個特征點畫一個圈,共68個

cv2.circle(img, pos, 2, color=(0, 255, 0))

# 利用cv2.putText輸出1-68

font = cv2.FONT_HERSHEY_SIMPLEX

cv2.putText(img, str(idx + 1), None, font, 0.8, (0, 0, 255), 1, cv2.LINE_AA)

cv2.namedWindow("img", 2)

cv2.imshow("img", img)

cv2.waitKey(0)

攝像頭實時檢測:

#_*_ coding:utf-8 _*_

importnumpy as npimportcv2importdlib

cap=cv2.VideoCapture(0)

detector=dlib.get_frontal_face_detector()

predictor= dlib.shape_predictor("data/shape_predictor_68_face_landmarks.dat")while 1:

ret, img=cap.read()#取灰度

img_gray =cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)#人臉數rects

rects =detector(img_gray, 0)for i inrange(len(rects)):

landmarks= np.matrix([[p.x, p.y] for p inpredictor(img, rects[i]).parts()])for idx, point inenumerate(landmarks):#68點的坐標

pos = (point[0, 0], point[0, 1])#利用cv2.circle給每個特征點畫一個圈,共68個

cv2.circle(img, pos, 2, color=(0, 255, 0))#利用cv2.putText輸出1-68

font =cv2.FONT_HERSHEY_SIMPLEX

cv2.putText(img, str(idx+ 1), None, font, 0.8, (0, 0, 255), 1, cv2.LINE_AA)

cv2.namedWindow("img", 2)

cv2.imshow("img", img)if cv2.waitKey(1) & 0xFF == ord("q"):break

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455260.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455260.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455260.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zabbix2.2.6郵件報警設置方法

http://www.jb51.net/article/56973.htm 這篇文章主要介紹了Zabbix郵件報警設置方法,在Zabbix服務端設置郵件報警,當被監控主機宕機或者達到觸發器預設值時,會自動發送報警郵件到指定郵箱說明:Zabbix監控服務端、客戶端都已經部署完…

Skip宏塊與Direct預測模式淺析

對于我來說,這個是一個老問題了。以前藍風車專門給我講解,我都沒搞懂(真有點對不起藍風車的細心教誨哈。呵呵~~~)。今天終于弄清楚了,特此總結出來,請大家指正。 B_Skip類型宏…

自律

生活上的自律 寫出自律的代碼 身體上的自律 日常生活中,存在這么兩條路。一條路誘惑我們只根據自己的沖動和直覺來生活。這條路可以稱為「寵物之路」,因為所有的動物,包括家里養的寵物狗走的都是這條路。餓了就吃,吃完就算。…

解決兼容性的庫

HTML5標簽兼容方案&#xff1a;html5shiv.js [GitHub地址&#xff1a;https://github.com/aFarkas/html5shiv/] IE8不支持HTML5的新標簽&#xff0c;如<header>、<nav>等標簽在IE8無法渲染。html5shiv.js可幫助IE6-8瀏覽器兼容HTML5語義化標簽。 使用方法&#xff…

H.264 中的相關問題

幀內解碼時&#xff0c;在解碼端&#xff0c;首先通過當前宏塊左邊、上邊已經解碼完成的宏塊使用當前宏塊的預測模式&#xff08;預測模式計算過程請參見我的論文《H.264數字視頻差錯控制技術的研究》&#xff0c;在群FTP“本群原創資料”目錄中&#xff09;得到當前宏塊的像素…

wenzhixin bootstrap-table 點擊table單元格改變顏色

bootstrap-table用于展示數據非常方便&#xff0c;也需要滿足一些個性化需求。比如點擊窗格&#xff08;td&#xff09;標記下顏色&#xff0c;用于目測 代碼如下&#xff0c;轉載請注明 $("table").on(click-row.bs.table, function (e, row, $el) {//el[0] is tr …

tornado學習筆記day01-高并發性能web框架

tornado的安裝 這里我使用的是虛擬環境中的pip安裝,配合清華大學鏡像源安裝的 pip install tornado -i https://pypi.tuna.tsinghua.edu.cn/simple我的第一個tornado程序 import tornado.web import tornado.ioloopclass IndexHandler(tornado.web.RequestHandler):主頁處理…

python99乘法表while翻譯_Python學習之while練習--九九乘法表

效果如下&#xff1a;實現代碼;m 1n 1while(m<10):while(n<m):print(n,"*",m,"",m*n,end \t)n 1print(\n)n 1m 1解析&#xff1a;這是一個很簡單的while嵌套程序&#xff0c;首先分析九九乘法表是從上往下逐行增加&#xff0c;且第一列乘積為1…

ASP.NET Core 2加入了Razor頁面特性

最近發布的ASP.NET Core 2.0&#xff0c;連同新發布的.NET Core 2和Entity Framework Core 2.0y&#xff0c;一并構成了.NET Core 2.0生態中的三元組。此發布給出了多個新特性和改進&#xff0c;其中包括通用性能的改進、Razor頁面、新的開發模板以及更好的Azure Diagnostics支…

matlab 矩陣拼接

E[a&#xff0c;b]%水平方向上的拼接 E[a &#xff1b;b] %垂直方向上的拼接 轉載于:https://www.cnblogs.com/hsy1941/p/7124083.html

JM8.5中的7種宏塊模式問題 - zhoujunming的專欄 - CSDN博客

JM8.5中的7種宏塊模式問題 收藏 Outline: 1、 CFG文件中有關可變尺寸宏塊模式的相關選項2、 7種宏塊模式對應的數值常量3、 7種宏塊模式被分成宏塊和亞宏塊4、 如何對宏塊和亞宏塊的運動估計&#xff0c;采用一個共同的函數來處理5、 遺留問題1、CFG文件中有關可變尺寸宏塊…

tornado學習筆記day02-進階與提升

整理基礎工程 請看第一天的配置文件目錄,搭建了一個框架的基礎目錄 Application settings debug 作用 可以設置tornado是否工作在調試模式下面,默認為false,即工作在生產模式下 true的特性: 自動重啟: tornado程序會監控源代碼文件,會自動重啟服務器,減少我們手動重啟…

python123測驗2答案八邊形_Python試卷

3、寫一個函數&#xff0c;計算一個給定的日期是該年的第幾天。def getday(self,yNone,mNone,dNone):date datetime(y,m,d)days date.strftime(%j)return days4、寫一個函數&#xff0c;給定N&#xff0c;返回斐波那契數列第N項。def getn_vlaue(self,n):if n<2:return 1e…

java實體類如果不重寫toString方法,會如何?

先認識一下Object Object 類的 toString 方法 返回一個字符串&#xff0c;該字符串由類名&#xff08;對象是該類的一個實例&#xff09;、at 標記符“”和此對象哈希碼的無符號十六進制表示組成。換句話說&#xff0c;該方法返回一個字符串&#xff0c;它的值等于&#xff1a;…

H.264 中很有用的一些概念

Q:PSNR 峰值信噪比 是根據它來取qp是不是&#xff1f; A:不是 和QP沒有直接關系但是QP的選擇會影響到PSNR Q: 如果不用率失真最優化&#xff0c;為什么選擇SATD&#xff0b;deltar&#xff08;mv&#xff0c;mode&#xff09;作為模式選擇的依據&#xff1f;為什么運動估…

tornado學習筆記day03-響應輸出

write: 作用: 將chunk中的數據寫到輸出緩沖區 利用write方法寫json數據 我們自己手動序列化json的那種方式Content-Type 的屬性值為text-html而我們采用write自動序列化方式,我們的content-type 屬性為application/json set_default_headers(): 作用: 在進入HTTP響應方法…

Machine Learning——octave矩陣操作(2)——DAY3

矩陣的數學操作&#xff1a; Assumed: a為一個矩陣&#xff0c;m是一個向量 Log(a)——求每一個元素的對數 Exp(a)——以e為底的指數 1./a——求每個元素的導師 [a,b]max(m)——m是一個向量&#xff0c;a為m當中最大的元素&#xff0c;b為a在m中的排列序號&#xff08;已按從小…

python 多進程并發_python并發編程之多進程

一 multiprocessing模塊介紹python中的多線程無法利用多核優勢&#xff0c;如果想要充分地使用多核CPU的資源(os.cpu_count()查看)&#xff0c;在python中大部分情況需要使用多進程。Python提供了multiprocessing。multiprocessing模塊用來開啟子進程&#xff0c;并在子進程中執…

tornado學習筆記day04-執行順序

響應輸出 -> write 原型 self.write()函數 源碼中是這樣定義的 def write(self, chunk: Union[str, bytes, dict]) -> None:作用 將chunk數據寫到緩沖區 刷新緩沖區的四種方式 程序中斷手動刷新緩沖區滿了遇到\n 當你寫了一個print之后,不是直接就顯示在黑屏中斷…

字符串中文判斷

2019獨角獸企業重金招聘Python工程師標準>>> 1、判斷字符串是否全是中文或含有中文 <?php header(Content-type:text/html; charsetutf-8); $str 你好; if(preg_match(/^[\x{4e00}-\x{9fa5}]$/u, $str)>0){ echo 全是中文; …