国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        基于Python+Keras+OpenCV實現實時人臉活體檢測

        2020-06-12 11:09
        磐創AI
        關注

        def isBlinking(history, maxFrames):    """ @history: A string containing the history of eyes status          where a '1' means that the eyes were closed and '0' open.        @maxFrames: The maximal number of successive frames where an eye is closed """    for i in range(maxFrames):        pattern = '1' + '0'*(i+1) + '1'        if pattern in history:            return True    return False3.活體的人臉識別我們幾乎擁有了建立“真實”人臉識別算法的所有要素,我們只需要一種實時檢測人臉和眼睛的方法。我使用openCV預先訓練的Haar級聯分類器來完成這些任務。有關Haar cascade人臉和眼睛檢測的更多信息,我強烈建議你閱讀openCV的這篇強大的文章。https://docs.opencv.org/3.4.3/d7/d8b/tutorial_py_face_detection.htmldef detect_and_display(model, video_capture, face_detector, open_eyes_detector, left_eye_detector, right_eye_detector, data, eyes_detected):        frame = video_capture.read()        # 調整框架大小        frame = cv2.resize(frame, (0, 0), fx=0.6, fy=0.6)

        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)        rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

        # 檢測人臉        faces = face_detector.detectMultiScale(            gray,            scaleFactor=1.2,            minNeighbors=5,            minSize=(50, 50),            flags=cv2.CASCADE_SCALE_IMAGE        )

        # 對于每個檢測到的臉        for (x,y,w,h) in faces:            # 將人臉編碼為128維嵌入向量            encoding = face_recognition.face_encodings(rgb, [(y, x+w, y+h, x)])[0]

        # 將向量與所有已知的人臉編碼進行比較            matches = face_recognition.compare_faces(data["encodings"], encoding)

        # 目前我們不知道該人的名字            name = "Unknown"

        # 如果至少有一次匹配:            if True in matches:                matchedIdxs = [i for (i, b) in enumerate(matches) if b]                counts = {}                for i in matchedIdxs:                    name = data["names"][i]                    counts[name] = counts.get(name, 0) + 1

        # 匹配次數最多的已知編碼對應于檢測到的人臉名稱                name = max(counts, key=counts.get)

        face = frame[y:y+h,x:x+w]            gray_face = gray[y:y+h,x:x+w]

        eyes = []

        # 眼睛檢測            # 首先檢查眼睛是否睜開(考慮到眼鏡)            open_eyes_glasses = open_eyes_detector.detectMultiScale(gray_face,scaleFactor=1.1,minNeighbors=5,minSize=(30, 30),flags = cv2.CASCADE_SCALE_IMAGE            )  # 如果open_eyes_glasses檢測到眼睛,則眼睛睜開 if len(open_eyes_glasses) == 2: eyes_detected[name]+='1' for (ex,ey,ew,eh) in open_eyes_glasses:                    cv2.rectangle(face,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

        # 否則嘗試使用left和right_eye_detector檢測眼睛    # 以檢測到睜開和閉合的眼睛  else:  # 將臉分成左右兩邊    left_face = frame[y:y+h, x+int(w/2):x+w]     left_face_gray = gray[y:y+h, x+int(w/2):x+w]

        right_face = frame[y:y+h, x:x+int(w/2)]                right_face_gray = gray[y:y+h, x:x+int(w/2)]

        # 檢測左眼                left_eye = left_eye_detector.detectMultiScale(                    left_face_gray,                    scaleFactor=1.1,                    minNeighbors=5,                    minSize=(30, 30),                    flags = cv2.CASCADE_SCALE_IMAGE                )

        # 檢測右眼                right_eye = right_eye_detector.detectMultiScale(                    right_face_gray,                    scaleFactor=1.1,                    minNeighbors=5,                    minSize=(30, 30),                    flags = cv2.CASCADE_SCALE_IMAGE                )

        eye_status = '1' # we suppose the eyes are open

        # 檢查每只眼睛是否閉合。                # 如果有人閉著眼睛,我們得出結論是閉著眼睛                for (ex,ey,ew,eh) in right_eye:                    color = (0,255,0)                    pred = predict(right_face[ey:ey+eh,ex:ex+ew],model)                    if pred == 'closed':                        eye_status='0'                        color = (0,0,255)                    cv2.rectangle(right_face,(ex,ey),(ex+ew,ey+eh),color,2)                for (ex,ey,ew,eh) in left_eye:                    color = (0,255,0)                    pred = predict(left_face[ey:ey+eh,ex:ex+ew],model)                    if pred == 'closed':                        eye_status='0'                        color = (0,0,255)                    cv2.rectangle(left_face,(ex,ey),(ex+ew,ey+eh),color,2)                eyes_detected[name] += eye_status

        # 每次,我們都會檢查該人是否眨眼            # 如果是,我們顯示其名字            if isBlinking(eyes_detected[name],3):                cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

        # 顯示名字                y = y - 15 if y - 15 > 15 else y + 15                cv2.putText(frame, name, (x, y), cv2.FONT_HERSHEY_SIMPLEX,0.75, (0, 255, 0), 2)

        return frame上面的功能是用于檢測和識別真實人臉的代碼,它接受以下參數:model:我們的睜眼/閉眼分類器video_capture:流視頻face_detector:Haar級聯的人臉分類器。我使用了haarcascade_frontalface_alt.xmlopen_eyes_detector:Haar級聯睜眼分類器。我使用了haarcascade_eye_tree_eyeglasses.xmlleft_eye_detector:Haar級聯的左眼分類器。我使用了haarcascade_lefteye_2splits.xml,它可以檢測睜眼或閉眼。right_eye_detector:Haar級聯的右眼分類器。我使用了haarcascade_righteye_2splits.xml,它可以檢測睜眼或閉眼。data:已知編碼和已知名稱的字典eyes_detected:包含每個名稱的眼睛狀態歷史記錄的字典。在第2-4行,我們從網絡攝像頭流中獲取一個幀,然后調整其大小以加快計算速度。在第10行,我們從幀中檢測人臉,然后在第21行,我們將其編碼為128-d矢量。在第23-38行,我們將這個向量與已知的人臉編碼進行比較,并通過計算匹配的次數來確定此人的姓名,選擇匹配次數最多的一個。從第45行開始,我們試著探測眼睛進入人臉框。首先,我們嘗試用睜眼檢測器來檢測睜眼,如果探測器探測成功,則在第54行,將“1”添加到眼睛狀態歷史記錄中,這意味著眼睛是睜開的,因為睜開的眼睛探測器無法檢測到閉著的眼睛;否則,如果第一個分類器失。ǹ赡苁且驗檠劬κ情]著的,或者僅僅是因為它不能識別眼睛),則使用左眼和右眼檢測器,人臉被分為左右兩側,以便對各個探測器進行分類。從第92行開始,提取眼睛部分,訓練后的模型預測眼睛是否閉合,如果檢測到一只眼睛閉著,則兩眼都將被預測為閉著,并將“0”添加到眼睛狀態歷史記錄中;否則就可以斷定眼睛是睜開的。最后,在第110行,is blinking()函數用于檢測眨眼,如果該人眨眼,則顯示姓名。整個代碼都可以在我的github帳戶上找到。

        <上一頁  1  2  
        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          人工智能 獵頭職位 更多
          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 丁香五月天激情网| 国产va精品| 91熟女视频| 中文字字幕在线中文| 欧美人妖性爱| av动态| 人妖网址| 熟女中文字幕?在线| 五大连池市| 无限A片| jizz18| 精品人伦一区二区三区| 免费在线3A级| 亚洲一二三| 91免费高清| 婷婷伊人綜合中文字幕小说| 襄樊市| 91豆花成人社区在线| 皮山县| www97| 亚洲男人皇宫| 洞口县| 欧美阿v视频| 中文字幕欧美人妻精品一区蜜臀| 博兴县| 波霸无码| 人人操超碰| 亚洲中文字幕AV在线| 兴安县| 91一区二区在线播放精品| 丝袜精品字幕| 河西区| 亚洲v| 欧美顶级metart裸体全部自慰| 静乐县| 探花无码| 老司机久久影院| 中文字幕亚洲有码| 成人自拍中文字幕| 浮力屁屁影院| 屁屁影院国产第一页|