opencv+python 自動綠帽機

具體內容,直接看註釋吧,該註釋的我都註釋掉了。code

# coding:utf-8
import cv2
# 待檢測的圖片路徑
imagepath = r'D://greenhat//2.jpg'

# 獲取訓練好的人臉的參數數據,這裏直接從GitHub上使用默認值,須要本身去下載
face_cascade = cv2.CascadeClassifier(r'D://greenhat//haarcascade_frontalface_default.xml')

# 讀取圖片
image = cv2.imread(imagepath)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

# 填上綠帽子的地址
gh = cv2.imread(r'D://greenhat//gh.png')
# 探測圖片中的人臉
faces = face_cascade.detectMultiScale(
    gray,
    scaleFactor = 1.022,#需>1,越小的話,檢測越寬泛,調整參數用
    minNeighbors = 5,
    minSize = (20,20),#最小腦殼
)

print("發現{0}我的臉!".format(len(faces)))

for(x,y,w,h) in faces:
    gh2 = cv2.resize(gh, (0,0), fx=0.3, fy=0.3)
    sp = gh2.shape
    for x1 in range(0,sp[0]):
        for y1 in range(0,sp[1]):
            # 去掉白顏色,只留下綠顏色,直接特判RGB
            if gh2[x1,y1,1]-gh2[x1,y1,0] > 60 and gh2[x1,y1,2] - gh2[x1,y1,1] > 7:
                image[y-w+x1+12,x+y1]=gh2[x1,y1]

    #   利用自帶的畫綠帽子
    #cv2.rectangle(image,(x,y-3),(x+w,y),(0,255,0),thickness=3)
    #cv2.circle(image,(x+int(w/2),y-4),2,(0,255,0),10)

cv2.imshow("Find Faces!",image)
cv2.waitKey(0)
相關文章
相關標籤/搜索