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介面學習(4):mnist例項---手寫數字識別
轉載原文地址: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學習(九):利用卷積對影象模糊處理
在影象上個人覺得卷積就是:對於某一位置的畫素,通過演算法來把它附近的所有畫素點的值聯合起來,重新設定這個畫素的大小。(大概就是這樣) 這個演算法類似有:均值,中值,就是取周圍所有畫素的均值、中值來設定這個畫素的大小。 (關於邊界問題:有幾種填充方法:補零、邊界複製、塊複製、映象複製等方法)&