注意:本文只是人臉檢測,人臉識別的實現請參見本人另一篇部落格:基於opencv+tensorflow+keras實現人臉識別
提前做的準備:
(1)**和說明
import cv2 as cv
import numpy as np
defface_detect_demo()
:#人臉檢測函式
gray = cv.cvtcolor(src, cv.color_bgr2gray)
#把變成灰度,因為人臉的特徵需要在灰度影象中查詢
#以下分別是haar和lbp特徵資料,任意選擇一種即可,注意:路徑中的『/』和『\』是有要求的
# 通過級聯檢測器 cv.cascadeclassifier,載入特徵資料
# face_detector = cv.cascadeclassifier(「d:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml」)
face_detector = cv.cascadeclassifier(
「d:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml」
)#在尺度空間對進行人臉檢測,第乙個引數是哪個,第二個引數是向上或向下的尺度變化,是原來尺度的1.02倍,第三個引數是在相鄰的幾個人臉檢測矩形框內出現就認定**臉,這裡是在相鄰的5個人臉檢測框內出現,如果比較模糊的話建議降低一點
faces = face_detector.detectmultiscale(gray,
1.02,5
)for x, y, w, h in faces:
#繪製結果圖
#rectangle引數說明,要繪製的目標影象,矩形的第乙個頂點,矩形對角線上的另乙個頂點,線條的顏色,線條的寬度
cv.rectangle(src,
(x, y)
,(x+w, y+h),(
0,0,
255),2
)cv.imshow(
「result」
, src)
#輸出結果圖
)#是jpg和png都可以
cv.namedwindow(
「input image」
, cv.window_autosize)
#建立繪圖視窗
cv.namedwindow(
「result」
, cv.window_autosize)
cv.imshow(
「input image」
, src)
face_detect_demo(
)cv.waitkey(0)
cv.destroyallwindows(
)#作用是能正常關閉繪圖視窗
(2)結果展示
(1)**和說明
import cv2 as cv
import numpy as np
def
face_detect_demo
(image)
:gray = cv.cvtcolor(image, cv.color_bgr2gray)
# face_detector = cv.cascadeclassifier(「d:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml」)
face_detector = cv.cascadeclassifier(
「d:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml」
)faces = face_detector.detectmultiscale(gray,
1.02,5
)for x, y, w, h in faces:
cv.rectangle(image,
(x, y)
,(x+w, y+h),(
0,0,
255),2
)cv.imshow(
「result」
, image)
capture = cv.videocapture(
「d:/pyproject/cv_renlianjiance/video/1.mp4」
)cv.namedwindow(
「result」
, cv.window_autosize)
while
(true):
ret, frame = capture.read(
)# cv.flip函式表示影象翻轉,沿y軸翻轉, 0: 沿x軸翻轉, <0: x、y軸同時翻轉
frame = cv.flip(frame,1)
face_detect_demo(frame)
c = cv.waitkey(10)
if c ==27:
#當鍵盤按下『esc』退出程式
break
cv.waitkey(0)
cv.destroyallwindows(
)#作用是能正常關閉繪圖視窗
(2)結果展示
**和說明
import cv2 as cv
import numpy as np
def
face_detect_demo
(image)
:gray = cv.cvtcolor(image, cv.color_bgr2gray)
# face_detector = cv.cascadeclassifier(「d:/pyproject/cv_renlianjiance/haarcascades/haarcascade_frontalface_alt_tree.xml」)
face_detector = cv.cascadeclassifier(
「d:/pyproject/cv_renlianjiance/lbpcascades/lbpcascade_frontalcatface.xml」
)faces = face_detector.detectmultiscale(gray,
1.02,5
)for x, y, w, h in faces:
cv.rectangle(image,
(x, y)
,(x+w, y+h),(
0,0,
255),2
)cv.imshow(
「result」
, image)
capture = cv.videocapture(0)
#其中的0表示電腦中的第乙個相機
cv.namedwindow(
「result」
, cv.window_autosize)
while
(true):
ret, frame = capture.read(
)# cv.flip函式表示影象翻轉,沿y軸翻轉, 0: 沿x軸翻轉, <0: x、y軸同時翻轉
frame = cv.flip(frame,1)
face_detect_demo(frame)
c = cv.waitkey(10)
if c ==27:
#當鍵盤按下『esc』退出程式
break
cv.waitkey(0)
cv.destroyallwindows(
)#作用是能正常關閉繪圖視窗
注意:本文只是人臉檢測,人臉識別的實現請參見本人另一篇部落格:基於opencv+tensorflow+keras實現人臉識別
提前做的準備:
(1)**和說明
import cv2 as cv
import numpy as np
基於python的opencv教程
第一次寫部落格,學習是要有輸入與輸出的,所謂教學相長。所以我想試著自己寫乙份教程,算是對自己的學習總結吧,部落格的排版比較直男,請湊合看吧。首先建議的ide是pycharm,opencv的庫直接pip安裝就好,最好大家有一定的python基礎。第一部分是關於圖象讀取和儲存。import cv2imp...
基於python的opencv學習
dst cv2.sobel src,ddept,dx,dy,ksize ddepth 影象的深度,一般設為 1ksize sobel運算元的大小 白到黑是正數,黑到白是負數,所有的負數都會被截斷為0,因此要使用convertscaleabs取絕對值2 拉普拉斯金字塔 1 低通濾波 2 縮小尺寸pyr...
基於Python和Opencv的目標檢測與特徵
而我們訓練分類器的過程就是給這個分類函式 數學模型 找到一系列最優的引數,使得通過這個函式來判斷時能達到最好的分類效果 更高階一點的分類器就加入了學習和自適應的概念使得分類更精準 那麼通過什麼可以得到這個分類器呢?就是分類演算法 提到演算法我們不得不提到機器學習的概念,機器學習演算法簡單來說可以通過...