鑑於本人的工作環境主要是採用python作為開發工具,故本篇部落格是基於python來做的學習記錄。
1. 讀取,將其轉換為陣列
from matplotlib import pyplot as pyl2. 陣列資料轉換import cv2
import numpy
img = cv2.imread("cat.jpg") #img是乙個numpy.ndarray物件,預設是以bgr三通道讀取資料(三維陣列)
#img_gray = cv2.imread("cat.jpg",cv2.imread_grayscale) 以灰度影象方式讀取資料(二維陣列)
img_gray = cv2.cvtcolor(img,cv2.color_bgr2gray) #將其轉換為灰度的二維陣列資料3. 陣列資料視窗展示
cv2.waitkey(0) # 按任意鍵關閉視窗,cv2.waitkey(1000) 延時一秒關閉視窗
cv2.destroyallwindows()4. 影象儲存
cv2.imwrite("mycat.jpg",img)5. 影象的擷取
# 其實本質就是對np陣列進行操作6. bgr資料切片cv2.imshow("image",img[:100,:200]) # 取前100行,前200列的畫素作為影象展示
# 切片
b,g,r = cv2.split(img) # 得到各自顏色通道的二維陣列資料
# 合併
img = cv2.merge(b,g,r)7 同樣大小的陣列畫素值運算
img_2 = numpy.copy(img)
# np相加,畫素值只要超過255,就減掉255,比如257,結果就為2
print(img[:3,:3,0]+img_2[:3,:3,0] )
# cv2相加,畫素值超過255,就等於255
print(cv2.add(img[:3,:3,0],img_2[:3,:3,0]))8 的融合
ret = cv2.addweighted(img_cat,0.2,img_dog,0.8,0) # 資料後面的值決定融合和所佔的權重
cv2.imshow("image",ret)
cv2.waitkey(0) # 按任意鍵關閉視窗,cv2.waitkey(1000) 延時一秒關閉視窗
cv2.destroyallwindows()
# 如果大小不一致,使用cv2.resize(img_xx,(300,200)) ————》轉換為np.shape = 200,300的陣列9 的比例縮放
ret = cv2.resize(img_cat,(0,0),fx=3,fy=1) #橫向拉長三倍
ret2 = cv2.resize(img_cat,(0,0),fx=3,fy=3) #擴大三
import numpy as np
import cv2
import os
filenames = os.listdir('./faces/')
faces =
# targerts == labels標籤
targets =
for f in filenames:
for fn in os.listdir('./faces/%s'%(f)):
faces = np.asarray(faces)
targets = np.asarray(targets)
len(targets)
#60/
labels = np.asarray([i for i in range(1,7)]*10)
labels.sort()
labels
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6])
# face-recognizer人臉的識別
# eigen特徵,根據特徵值相似,認為同乙個人
fr = cv2.face.eigenfacerecognizer_create()
labels_train = labels[::2]
len(labels_train)
#30faces_train = faces[::2]
len(faces_train)
#30# faces_train2=
# for face in faces_train:
# gray = cv2.cvtcolor(face,cv2.color_bgr2bgra)
# 灰度化處理
faces_train2 =
for face in faces_train:
gray = cv2.cvtcolor(face,cv2.color_bgr2gray)
faces_train2 = np.asarray(faces_train2)
faces_train2.shape
#(30, 64, 64)
# 訓練
fr.train(faces_train2,labels_train)
face_test = faces[1::2]
#叫什麼名字的標籤
labels_test =labels[1::2]
targets_labels =targets[::10]
for face in face_test:
gray = cv2.cvtcolor(face,cv2.color_rgb2gray)
# 1 ~ 20
label,confidence = fr.predict(gray)
cv2.imshow(targets_labels[label-1],face)
print(label,confidence)
print('------------------',targets_labels[label-1])
cv2.waitkey(1000)
cv2.destroyallwindows()
print(targets_labels)
學習opencv 人臉識別
在opencv中提供了許多成熟的介面,其中乙個就是人臉識別,先看看效果圖。可以看出用opencv自帶的樣本就能很方便的識別出人臉。opencv有已經自帶了人臉的haar特徵分類器。在目錄 opencv sources data haarcascades 下面。可以看出裡面還有很多分類器,識別左耳 右...
OpenCv人臉識別
在進行人臉識別時候,為了達到效果,我們使用opencv的分類器。進行對進行識別。include include include include using namespace cv using namespace std void detectanddraw mat img,cascadeclass...
opencv人臉識別
在python環境下利用opencv實現人臉識別,接下來一步一步動手操作。預備知識 一 環境準備 如果已經準備好了請跳過。0,第一步安裝numpy和matplotlib pip install upgrade setuptools pip install numpy matplotlib 1,pip...