face_recognitionリアルタイム顔認識

特定のインストール会場:https://www.cnblogs.com/ckAng/p/10981025.html

その他のアクション会場:https://github.com/ageitgey/face_recognition

#!は/ usr / binに/ ENVのpython3 
# - * -コーディング:UTF-8 - * - 
輸入face_recognition 
輸入CV2の
輸入numpyのNPのよう

#これはあなたのウェブカメラからのライブ映像に顔認識を実行しているのデモです。それはより少し複雑だ
#他の例が、それは物事が速く多くのことを実行するためにいくつかの基本的なパフォーマンスの調整が含まれています
。#1プロセスの各ビデオフレームの1/4の解像度(まだフル解像度でそれを表示しても)で
2位。唯一のビデオのフレームおきに顔を検出。

#注意:この例では、OpenCVの( `cv2`ライブラリー)は、あなたのウェブカメラからの読み込みにのみインストールする必要があります。
#OpenCVのは、* face_recognitionライブラリを使用する必要はありません*です。あなたはこれを実行したい場合にのみ必要です
#特定のデモ。あなたがトラブルそれをインストールしている場合は、代わりにそれを必要としない他のいずれかのデモを試してみてください。

#ウェブカメラ#0(デフォルト1)への参照を取得
video_capture = cv2.VideoCapture(0) 
サンプル画像をロードし、それを認識する方法を学習します。
obama_image = face_recognition.load_image_file( "IMG / kAng.jpg")
obama_face_encoding = face_recognition.face_encodings(obama_image)[0] 
は、第2のサンプル画像をロードし、それを認識する方法を学びます。
biden_image = face_recognition.load_image_file( "IMG / test10.jpg")
biden_face_encoding = face_recognition.face_encodings(biden_image)[0] 
は、公知の顔エンコーディングの配列を作成し、その名前
known_face_encodings = [ 
    obama_face_encoding、
    biden_face_encoding 
] 
known_face_names = [ 
    "カン"、
    "オバマ"  
]

#いくつかの変数を初期化
[= face_locations]を
face_encodings = [] 
face_names = [] 
process_this_frame = Trueの

一方TRUE: グラブビデオの単一フレーム
    RET、フレーム= video_capture.read()

    #高速顔認識処理のために1/4サイズにビデオのフレームのサイズを変更
    small_frame = cv2.resize(フレーム、(0、0)、FX = 0.25、FY = 0.25)

    位に(OpenCVのに使用)BGRの色から画像を変換します(face_recognitionが使用)RGB色
    - [1、:: :,] rgb_small_frame = small_frame 

    時間を節約するために、ビデオのすべての他のフレーム#のみ処理を
    process_this_frame場合: 
            代わり#または、新しい顔の最小距離と既知の顔を使用し 
        #ビデオの現在のフレーム内のすべての顔と顔エンコーディングを探す
        face_locationsの=のface_recognition.face_locations(rgb_small_frame)
        face_encodings = face_recognition.face_encodings(rgb_small_frame、face_locations)

        face_names = [] 
        face_encodingsにface_encoding用:
            #は顔が知られている面(S)に一致があるかどうかを確認し
            (face_encoding、known_face_encodings)=のface_recognition.compare_faces一致
            名= "不明" 

            位#マッチはちょうど最初のものを使用し、known_face_encodingsで発見された場合。
            #もし試合で真:
            #first_match_index = matches.index(真)
            #名= known_face_names [first_match_index] 

            face_distances = face_recognition.face_distance(known_face_encodings、face_encoding) 
            best_match_index = np.argmin(face_distances)を
            マッチ[best_match_index]場合:
                名前= known_face_names [best_match_index] 

            face_names.append(名前)

    process_this_frameは= process_this_frameない


    #結果表示
    、右、(トップのための左下)、ZIP内の名前(face_locations、face_names):
        背面位置まで#スケール我々が検出されたフレームを1/4サイズにスケーリングされてから
        トップ* = 4 
        右* = 4 
        底* = 4 
        左* = 4 

        #顔の周りにボックスを描画
        cv2.rectangle(フレーム、(左、上)、(右、下)、(0、0、255)、2)
顔、以下の名前とラベルを描きます
        cv2.rectangle(フレーム、(左、底- 35)、(右、下)、(0 、0、255)、cv2.FILLED)
        フォント= cv2.FONT_HERSHEY_DUPLEX 
        cv2.putText(フレーム、名前、(左+ 6、ボトム- 6)、フォント、1.0、(255、255、255)、1) 
表示結果の画像
    cv2.imshow(「ビデオ」、フレーム)

    終了するには、キーボード上の#1ヒット「Q」!
    :cv2.waitKeyは、(1)&0xFFのORD( 'Q')==場合
        ブレーク

ウェブカメラに#リリースハンドルを
()video_capture.release 
cv2.destroyAllWindows()

  

 

おすすめ

転載: www.cnblogs.com/ckAng/p/10984013.html