述べたように、フレーム検出カメラ機能に応じて開閉簡単に達成することができます。
最初のアイデアは、次のとおりです。
コンピュータのカメラを呼び出す1. CV2は、額縁を読み込みます。
2.ハルとして画面 - 入力インタフェース顔分類器を、結果に応じて分類器は、分類領域の結果を返さ。
目の分類器の入力 - 3.結果はハルとして、画像の領域をトリミング。
4.出力顔分類器上の画像は、眼クラシファイアすなわち閉眼状態を検出できない場合確認し、ヒントを与えています。
動作時には実質的に透明。
コードを入れてください:
#- * -コーディング:UTF-8 - - * から __future__ インポートunicode_literals インポートCV AS CV2を #インポート時間 #ハルカスケード分類器 FD = cv.CascadeClassifier(R&LT " Users \ユーザー\ wenzhe.tian \デスクトップ\閉じ:C眼の\ haarcascade_frontalface_alt.xml識別' ) ED = cv.CascadeClassifier(R&LT ' Cが:ユーザー\ \ wenzhe.tianデスクトップ\眼認識\のhaarcascade_eye_tree_eyeglasses.xml閉鎖\ ' ) #のNd = cv.CascadeClassifier(' ../../データ/ハール/ nose.xml「) VC = cv.VideoCapture(0) 、一方TRUE: フレーム = vc.read()[1 ] 顔= fd.detectMultiScale(フレーム、1.3、5 ) のための L、T、W、H で顔: 、B = INT(W / 2)、INT(H / 2 ) cv.ellipse(フレーム、(L +、 T + B)、(a、b)は、0、0、360、(255、0、255)、2 ) 顔 =枠[T:T + H、LのL + W] 目 = ed.detectMultiScale(顔、 1.3、5 ) のための L、T、W、H で目: 、B = INT()W / 2、INT(H / 2 ) cv.ellipse(顔、(L +、T + B)、(A 、B)、0,0、360、(0、255、0)、2 ) #鼻= nd.detectMultiScale(顔、1.3、5) #L、T、W、鼻における時間: #1 、A、B = INT(W / 2)、INT(H / 2) #1 cv.ellipse(面、(LA、TB)、(b)は、0、 #0、360、(255、0、0)、2) #1 、A = '近い目!!' もし lenは(目)=!0: cv.destroyWindow(' 近い目!! ' ) #1 cv.moveWindow( 'オープンの目'、300300) cv.imshow(' 開眼!! ' 、フレーム) 他: cv.destroyWindow (' 開眼!! ' ) #1 time.sleep(1) #1 cv.moveWindow( '近くの目'、300300) cv.imshow(' 近い目!! ' 、フレーム) であれば cv.waitKey(1)== ORD(' ' ): ブレーク vc.release() cv.destroyAllWindows()