OpenCV實現面部識別並新增聖誕帽

2021-09-03 01:23:12 字數 1827 閱讀 7969

opencv摳圖並面部檢測後新增聖誕帽

從網上獲取trump的頭像, 再使用eigenfacerecognizer_create單獨識別出trump

#構建mask

hsv=cv2.cvtcolor(hat,cv2.color_rgb2hsv)

black_lower=np.array([0,0,0])

black_upper=np.array([180,180,180])

mask=cv2.inrange(hsv,black_lower,black_upper)

#cv2.imshow('mask',mask)

#腐蝕膨脹

erode=cv2.erode(mask,none,iterations=1)

#cv2.imshow('erode',erode)

dilate=cv2.dilate(erode,none,iterations=1)

#cv2.imshow('dilate',dilate)

def detect(filename):

face_cascade=cv2.cascadeclassifier('haarcascade_frontalface_default.xml')

img=cv2.imread(filename)

gray=cv2.cvtcolor(img,cv2.color_bgr2gray)

faces=face_cascade.detectmultiscale(gray,scalefactor=1.055,minneighbors=5,minsize=(30,30))

for (x,y,w,h) in faces:

#img=cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)#面部識別方框

sp=hat.shape

hatsizeh=int(sp[0]/sp[1]*w)

if hatsizeh>y:

hatsizeh=y

hatresize=cv2.resize(hat,(w,hatsizeh),interpolation=cv2.inter_nearest)

dilateresize=cv2.resize(dilate,(w,hatsizeh),interpolation=cv2.inter_nearest)

top=y-hatsizeh

if top<=0:

top=0

rows,cols,channels=hatresize.shape

roi=img[top:top+rows,x:x+cols]

for i in range(rows):

for j in range(cols):

if dilateresize[i,j]==0:#0代表黑色的點

img[top+i,x+j]=hatresize[i,j]#此處替換顏色,為bgr通道

計組令人窒息, 丟下**就跑, 有空再更

自動識別OpenCV版本並新增依賴庫

這裡給大家介紹一種在標頭檔案中自動判斷識別opencv的版本號,並據此新增對應的依賴庫 lib檔案 的方法。具體 如下 ifndef predep h define predep h pragma once include targetver.h include include include in...

自動識別OpenCV版本並新增依賴庫

這裡給大家介紹一種在標頭檔案中自動判斷識別opencv的版本號,並據此新增對應的依賴庫 lib檔案 的方法。具體 如下 ifndef predep h define predep h pragma once include targetver.h include include include in...

人臉面部表情識別 keras實現(二)

import cv2 import sys import json import time import numpy as np from keras.models import model from json cascpath sys.ar 1 facecascade cv2.cascadecla...