機器學習 特徵提取68

2021-10-01 11:34:48 字數 3364 閱讀 3383

先呈現出玩壞的劉亦菲姐姐

opencv 的畫圖函式

畫圓 cv2.circle( img, (p1,p2), r, (255,255,255) )

引數 2:  (p1,p2)-   圓心座標 center;

引數 3:  r-       半徑 radius;

引數 4:  (255,255,255)-  顏色陣列;

寫字元 cv2.puttext( img,「test」, (p1,p2), font, 4, (255,255,255), 2, cv2, line_aa )

cv2.puttext(img=img, text=「hello world」, org=(10,30), fontface=font, fontscale=0.6, color=(187, 255, 255), thickness=1, linetype=cv2.line_aa)

引數 1:  img-      影象物件 img;

引數 2:  「test」-      需要列印的字元 text(數字的話可以利用 str() 轉成字元);

引數 3:  (p1,p2)-     座標 textorg;

引數 4:  font-      字型 fontface( 注意這裡 font = cv2.font_hershey_******x );

引數 5:  4-       字型大小 fontscale;

引數 6:  (255,255,255)-  顏色陣列 color;

引數 7:  2-        線寬 thickness;

引數 8:  line_aa-    線條種類 line_type;

* 關於 顏色陣列:

(255,255,255), (藍色,綠色,紅色),每個值都是 0-255;

比如:藍色 (255,0,0),紫色 (255,0,255)

import dlib                     # 人臉檢測的庫 dlib

import numpy as np # 資料處理的庫 numpy

import cv2 # 影象處理的庫 opencv

# dlib 檢測器和**器

detector = dlib.get_frontal_face_detector(

)predictor = dlib.shape_predictor(r'd:\shape_predictor_68_face_landmarks.dat'

)# 讀取影象檔案

1、split—提取r、b、g分量(返回值順序為:b、g、r)

函式原型:split(m, mv=none)

m:彩圖矩陣

mv:預設引數

2、merge—合併r、g、b(引數順序為:b、g、r)

函式原型:merge(mv, dst=none)

m:b、g、r分量

mv:預設引數

3、cvtcolor—合併r、g、b(引數順序為:b、g、r)

函式原型:cvtcolor(src, code, dst=none, dstcn=none)

src:影象矩陣

code:轉化引數

其他:預設引數

具體參考:

'''img_gray = cv2.cvtcolor(img_rd, cv2.color_rgb2gray)

# 人臉數

faces = detector(img_gray,0)

# 待會要寫的字型

font = cv2.font_hershey_******x

# 標 68 個點

iflen

(faces)!=0

:# 檢測到人臉

for i in

range

(len

(faces)):

# 取特徵點座標

landmarks = np.matrix(

[[p.x, p.y]

for p in predictor(img_rd, faces[i]

).parts()]

)for idx, point in

enumerate

(landmarks)

:# 68 點的座標

pos =

(point[0,

0], point[0,

1])# 利用 cv2.circle 給每個特徵點畫乙個圈,共 68 個

cv2.circle(img_rd, pos,

2, color=

(139,0

,0))

# 利用 cv2.puttext 寫數字 1-68

cv2.puttext(img_rd,

str(idx +1)

, pos, font,

0.2,

(187

,255

,255),

1, cv2.line_aa)

cv2.puttext(img_rd,

"faces: "

+str

(len

(faces)),

(20,50

), font,1,

(0,0

,0),

1, cv2.line_aa)

else

:# 沒有檢測到人臉

cv2.puttext(img_rd,

"no face",(

20,50)

, font,1,

(0,0

,0),

1, cv2.line_aa)

# 視窗顯示

# 引數取 0 可以拖動縮放視窗,為 1 不可以

# cv2.namedwindow("image", 0)

cv2.namedwindow(

"image",1

)cv2.imshow(

"image"

, img_rd)

#r、g、b分量的提取

(b,g,r)

= cv2.split(img_rd)

#提取r、g、b分量

cv2.imshow(

"red"

,r)cv2.imshow(

"green"

,g)cv2.imshow(

"blue"

,b)cv2.waitkey(

0)

特徵提取 機器學習

特徵提取簡介 sift原理 sift原理 sift原理 1.k近鄰法,簡單來說就是哪個點離得近就把例項點歸到哪一類中。特殊情況是最近鄰演算法 1近鄰演算法。演算法主要包括演算法的模型,距離度量 k值的選擇和演算法的具體實現。其中演算法的實現主要有兩種形式 線性掃瞄法和構建資料索引。改善演算法最好的當...

機器學習 特徵提取

from sklearn.feature extraction import dictvectorizer import numpy as np 定義一組字典列表,用來表示多個資料樣本 d1 例項化 dict dictvectorizer data dict fit transform d1 轉化後...

機器學習特徵提取

本文主要介紹基於sklearn的特徵提取,旨在為機器學習提供乙個好的開端 1.分類特徵提取 如上圖所示 許多特徵如pclass代表乘客船艙等級,分為1,2,3。還有例如性別,乘客登船碼頭,稱之為分類特徵。對於這一類資料的提取,採用one hot編碼。例如 data資料有兩個特徵,分別是城市和溫度,顯...