1. 程式人生 > >python dlib學習(七):人臉特徵點對齊

python dlib學習(七):人臉特徵點對齊

前言

前面的部落格介紹過人臉特徵點標定:python dlib學習(二):人臉特徵點標定。這次試著使用這些人臉特徵點來對人臉進行對齊。
完整工程連結附在文章最後。

程式

程式中已有註釋,不做贅述。

# coding: utf-8
import cv2
import dlib
import sys
import numpy as np
import os

# 獲取當前路徑
current_path = os.getcwd()
# 指定你存放的模型的路徑,我使用的是檢測68個特徵點的那個模型,
# predicter_path = current_path + '/model/shape_predictor_5_face_landmarks.dat'# 檢測人臉特徵點的模型放在當前資料夾中
predicter_path = current_path + '/model/shape_predictor_68_face_landmarks.dat' face_file_path = current_path + '/faces/inesta.jpg'# 要使用的圖片,圖片放在當前資料夾中 print predicter_path print face_file_path # 匯入人臉檢測模型 detector = dlib.get_frontal_face_detector() # 匯入檢測人臉特徵點的模型 sp = dlib.shape_predictor(predicter_path) # 讀入圖片
bgr_img = cv2.imread(face_file_path) if bgr_img is None: print("Sorry, we could not load '{}' as an image".format(face_file_path)) exit() # opencv的顏色空間是BGR,需要轉為RGB才能用在dlib中 rgb_img = cv2.cvtColor(bgr_img, cv2.COLOR_BGR2RGB) # 檢測圖片中的人臉 dets = detector(rgb_img, 1) # 檢測到的人臉數量 num_faces = len(dets) if
num_faces == 0: print("Sorry, there were no faces found in '{}'".format(face_file_path)) exit() # 識別人臉特徵點,並儲存下來 faces = dlib.full_object_detections() for det in dets: faces.append(sp(rgb_img, det)) # 人臉對齊 images = dlib.get_face_chips(rgb_img, faces, size=320) # 顯示計數,按照這個計數建立視窗 image_cnt = 0 # 顯示對齊結果 for image in images: image_cnt += 1 cv_rgb_image = np.array(image).astype(np.uint8)# 先轉換為numpy陣列 cv_bgr_image = cv2.cvtColor(cv_rgb_image, cv2.COLOR_RGB2BGR)# opencv下顏色空間為bgr,所以從rgb轉換為bgr cv2.imshow('%s'%(image_cnt), cv_bgr_image) cv2.waitKey(0) cv2.destroyAllWindows()

執行結果

這裡寫圖片描述

原圖:

這裡寫圖片描述

相關推薦

python dlib學習人臉特徵

前言 前面的部落格介紹過人臉特徵點標定:python dlib學習(二):人臉特徵點標定。這次試著使用這些人臉特徵點來對人臉進行對齊。 完整工程連結附在文章最後。 程式 程式中已有註釋,不做

python dlib學習訓練人臉特徵檢測器

前言 前面的部落格(python dlib學習(二):人臉特徵點標定)介紹了使用dlib識別68個人臉特徵點,但是當時使用的是dlib官方給出的訓練好的模型,這次要自己訓練一個特徵點檢測器出來。當然,想要達到state-of-art的效果需要自己調參,這也是一

python dlib學習人臉

前言 在前面的部落格中介紹了,如何使用dlib標定人臉(python dlib學習(一):人臉檢測),提取68個特徵點(python dlib學習(二):人臉特徵點標定)。這次要在這兩個工作的基礎之上,將人臉的資訊提取成一個128維的向量空間。在這個向量空間上

Matlab影象處理學習筆記surf特徵

本文主要演示如何使用matlab自帶的Computer Vision System Toolbox這個工具箱進行suft特徵點的檢測、匹配及顯示。這個工具箱是matlab2012b及之後才有的一個工具

Python學習生成器表示式expr for iner_var in iterable if cond_expr

列表解析:[expr for iter_var in iterable if cond_expr] 生成器表示式:(expr for iter_var in iterable if cond_expr)    J = 'aadsjnk' S = 'asadasbxjs

JAVA學習方法重載與方法重寫、thiskeyword和superkeyword

格式 hello new 初始 per 而且 方法重寫 學習 方式 方法重載與方法重寫、thiskeyword和superkeyword 1、方法重載 重載可以使具有同樣名稱但不同數目和類型參數的類傳遞給方法。 註: 一是重載方法的參數列表必須與被重載的方法不同

Python+Selenium筆記WebDriver和WebElement

關閉 tab keys selenium test self. reg selector tor (一) WebDriver WebDriver提供許多用來與瀏覽器交互的功能和設置,通過WebDriver的功能和一些方法,來實現與瀏覽器窗口、警告、框架和彈出窗口的交互

PE檔案格式學習安全表

1.介紹 如果一個應用程式有數字簽名,那麼它的安全表就不會為空。它位於異常表的後面。 2.安全表解析 通過資料目錄表裡提供的RVA,我們轉換成offset,找到了安全表的位置,如下: 安全表的結構體如下: typedef struct _WIN_CERTIFIC

ionic學習問答社群03登入功能實現 總結篇

登入功能整整搞了一天,期間各種錯誤不斷,剛接觸ionic,對Angular也不太熟悉,沒正規的學過html,css,js等前端知識。 整理一下流程: 1.製作登入頁面 2.構造登入等待遮罩層和登入錯誤遮罩層 3.通過storge儲存登入的資訊 4.通過判斷是否登入,並顯示相應頁面 備

Java語言學習字串的常見使用

    Java中字串的使用很是常見,也是不可避免的,比如:格式化、大小寫轉換等等,下面就這些常見的使用來說下字串。     在使用前,必須要理解一點:字串是不可變的物件,意味著每當呼叫字串物件的方法操作字串時,都將產生一個新的字串物件,而不是更改原來的字

opencv學習圖片切割、合併、填充

一、圖片切割與合併   原理通過操作影象矩陣來獲取或合併指定位置的影象 ​ # -*- coding=GBK -*- import cv2 as cv import numpy as np #擷取圖片中的指定區域或在指定區域新增某一圖片 def jie_image(src1

webpack學習啟用 HMR(模組熱替換)

demo地址: https://github.com/Lkkkkkkg/webpack-demo 上次使用 webpack-dev-serve : https://blog.csdn.net/qq593249106/article/details/84922572 當前目錄結構 :

caffe的python介面學習6用訓練好的模型caffemodel來分類新的圖片

#coding=utf-8import caffeimport numpy as nproot='/home/xxx/' #根目錄deploy=root + 'mnist/deploy.prototxt' #deploy檔案caffe_model=root + 'mnist/lenet_iter

機器學習主成分分析PCA降維_Python

六、PCA主成分分析(降維) 1、用處 資料壓縮(Data Compression),使程式執行更快 視覺化資料,例如3D-->2D等 …… 2、2D–>1D,nD–&

Python網路爬蟲解決ImportError:DLL load failed作業系統無法執行問題

背景: Python版本:Anaconda3 問題描述: 最近在執行scrapy專案時,本來安裝好好的scrapy框架突然報錯,猝不及防, ImportError:DLL load failed:作業系統無法執行%1 如圖: 自己也是百思

thinkphp5.0學習資料庫操作

一、支援資料庫的型別 Mysql,SqlServer,pgSQL,Sqlite等資料庫的支援 二、如何連線資料庫 1.配置檔案定義 a.配置檔案目錄 專案\application\database.php b.如何配置 return [

caffe的python介面學習4mnist例項---手寫數字識別

轉載原文地址:http://www.cnblogs.com/denny402/p/5684431.html 深度學習的第一個例項一般都是mnist,只要這個例子完全弄懂了,其它的就是舉一反三的事了。由於篇幅原因,本文不具體介紹配置檔案裡面每個引數的具體函義,如果想弄明白

ElasticStack學習ElasticSearch之Mapping初探

一、Mapping的概念   1、Mapping類似於資料庫中的Schema的定義,作用如下:     1)定義索引中的欄位的名稱;     2)定義欄位的資料型別,例如字串、數字、日期、布林等;     3)對每個欄位進行倒排索引的建立及相關配置;     4)Mapping會將Json文件對映成

Unity3D學習使用JSON進行象數據的存儲讀取

進行 存儲路徑 新的 del jpg cati spa 全局變量 .net 前言 前段時間完成了自己的小遊戲Konster的制作,今天重新又看了下代碼。原先對關卡解鎖數據的存儲時用了Unity自帶的PlayerPref(字典式存儲數據)。 讀取關卡數據的代碼: voi

opencv學習利用卷積影象模糊處理

在影象上個人覺得卷積就是:對於某一位置的畫素,通過演算法來把它附近的所有畫素點的值聯合起來,重新設定這個畫素的大小。(大概就是這樣) 這個演算法類似有:均值,中值,就是取周圍所有畫素的均值、中值來設定這個畫素的大小。 (關於邊界問題:有幾種填充方法:補零、邊界複製、塊複製、映象複製等方法)&