今日はそれを拡張して、人間の顔をした飛行機の戦いをプレイします。考え方はジェスチャー認識と似ていますが、コードの量はジェスチャー認識バージョンよりわずかに多くなります。
使用される顔アルゴリズムはミリ秒レベルで、フレーム レートは 30 に達し、コンピューターの CPU 上で非常にスムーズに動作します。
以下ではプロジェクトの実装プロセスを共有し、記事の最後でプロジェクトの完全なソース コードを入手します。
Plane War プログラムの準備
Plane War プログラムの Python バージョンを Github で見つけ、Pygame をインストールして実行します。
キーボードの A、D、W、S キーを使用して、航空機の移動方向を制御します。それぞれ左、右、上、下に対応します。 。
したがって、次にしなければならないことは、顔を認識し、顔の姿勢を推定し、推定結果を左右上下にマッピングして航空機の動作を制御することです。
顔認識
ここでは、opencv を使用してカメラからビデオ ストリームを読み取ります。
ビデオ ストリームの各フレームをメディアパイプの顔認識モデルに送信して認識します。
Picture mediapipe は顔を認識するだけでなく、顔の 6 つの重要なポイント (左目、右目、左耳、右耳、鼻、口) をマークすることもできます。
コア コード:
with self.mp_face_detection.FaceDetection( model_selection=0, min_detection_confidence=0.9) as face_detection: while cap.isOpened(): success, image = cap.read() image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) results = face_detection.process(image) image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) if results.detections: for detection in results.detections: # 获取人脸框坐标 face_box = detection.location_data.relative_bounding_box face_w, face_h = int(face_box.width * frame_w), int(face_box.height * frame_h) face_l = int(face_box.xmin * frame_w) + face_w face_t = int(face_box.ymin * frame_h) face_r, face_b = face_l - face_w, face_t + face_h # 显示人脸框 cv2.rectangle(image, (face_l, face_t), (face_r, face_b), (0, 255, 255), 2) self.draw_zh_img(image, self.face_box_name_img, (face_r + face_l) // 2, face_t - 5) pose_direct, pose_key_points = self.pose_estimate(detection) # 显示人脸 6 个关键点 for point_name in FaceKeyPoint: mp_point = self.mp_face_detection.get_key_point(detection, point_name) point_x = int(mp_point.x * frame_w) point_y = int(mp_point.y * frame_h) point_color = (0, 255, 0) if point_name in pose_key_points else (255, 0, 255) cv2.circle(image, (point_x, point_y), 4, point_color, -1) # 显示关键点中文名称 point_name_img = self.face_key_point_name_img[point_name] self.draw_zh_img(image, point_name_img, point_x, point_y-5)
誰もが注意する必要がある小さな知識点があります。 opencv は中国語の直接表示をサポートしていないため、
draw_zh_img は中国語を表示するコードで使用されます。そこで、PIL モジュールの Image メソッドを使用して、事前に中国語の絵を描画し、opencv 形式に変換します。
必要に応じて、高効率でフレームドロップなしでビデオストリームと直接マージします。
顔のポーズの推定
ジェスチャ認識の前に、隣接するフレームを使用してジェスチャの動きを判断していました。顔の姿勢の推定は現在のフレームのみを使用するため、比較的簡単です。
顔の 6 つのキー ポイントの座標距離によって顔の姿勢を決定できます。
ここでは、左耳間の水平距離です。したがって、顔が左を向いていると推定でき、したがって飛行機を左に動かすことができます。
同様に、他のキーポイントを使用して、顔が右を向いたり、上向き(頭が上)、下向き(頭が下)になったりすることを推定できます。
コアコード:
# 左耳与鼻子水平距离,判断面部左转 left_ear_to_nose_dist = left_ear.x - nose_pos.x # 右耳与鼻子水平距离,判断面部右转 nose_to_right_ear_dist = nose_pos.x - right_ear.x # 鼻子与左眼垂直距离,判断面部向上 nose_to_left_eye_dist = nose_pos.y - left_eye.y # 左耳与左眼垂直距离,判断面部向下 left_ear_to_left_eye_dist = left_ear.y - left_eye.y if left_ear_to_nose_dist < 0.07: # print('左转') self.key_board.press_key('A') time.sleep(0.07) self.key_board.release_key('A') return 'A', [FaceKeyPoint.NOSE_TIP, FaceKeyPoint.LEFT_EAR_TRAGION] if nose_to_right_ear_dist < 0.07: # print('右转') self.key_board.press_key('D') time.sleep(0.07) self.key_board.release_key('D') return 'D', [FaceKeyPoint.NOSE_TIP, FaceKeyPoint.RIGHT_EAR_TRAGION]
航空機の動きの姿勢制御
顔の姿勢を認識した後、プログラムを使用してキーボードを制御し、航空機の動きを制御できます。
ここでは、PyKeyboard モジュールを使用してキーボードのキーを制御します。
self.key_board = PyKeyboard() # print('左转') self.key_board.press_key('A') time.sleep(0.07) self.key_board.release_key('A')
press_key 関数と release_key 関数は、それぞれキーを押すとキーを放します。
この間に、ボタンの持続時間を制御するために time.sleep(0.07) が呼び出されます。ボタンを長押しすると、航空機の移動距離が長くなります。ボタンを押す時間が短いと、機体の移動距離も短くなりますので、ご自身のニーズに合わせて調整してください。
以上が顔認識はまだこのように機能しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

科学者は、彼らの機能を理解するために、人間とより単純なニューラルネットワーク(C. elegansのものと同様)を広く研究してきました。 ただし、重要な疑問が生じます。新しいAIと一緒に効果的に作業するために独自のニューラルネットワークをどのように適応させるのか

GoogleのGemini Advanced:Horizonの新しいサブスクリプションティア 現在、Gemini Advancedにアクセスするには、1か月あたり19.99ドルのGoogle One AIプレミアムプランが必要です。 ただし、Android Authorityのレポートは、今後の変更を示唆しています。 最新のGoogle p

高度なAI機能を取り巻く誇大宣伝にもかかわらず、エンタープライズAIの展開内に大きな課題が潜んでいます:データ処理ボトルネック。 CEOがAIの進歩を祝う間、エンジニアはクエリの遅い時間、過負荷のパイプライン、

ドキュメントの取り扱いは、AIプロジェクトでファイルを開くだけでなく、カオスを明確に変えることです。 PDF、PowerPoint、Wordなどのドキュメントは、あらゆる形状とサイズでワークフローをフラッシュします。構造化された取得

Googleのエージェント開発キット(ADK)のパワーを活用して、実際の機能を備えたインテリジェントエージェントを作成します。このチュートリアルは、ADKを使用して会話エージェントを構築し、GeminiやGPTなどのさまざまな言語モデルをサポートすることをガイドします。 w

まとめ: Small Language Model(SLM)は、効率のために設計されています。それらは、リソース不足、リアルタイム、プライバシーに敏感な環境の大手言語モデル(LLM)よりも優れています。 特にドメインの特異性、制御可能性、解釈可能性が一般的な知識や創造性よりも重要である場合、フォーカスベースのタスクに最適です。 SLMはLLMSの代替品ではありませんが、精度、速度、費用対効果が重要な場合に理想的です。 テクノロジーは、より少ないリソースでより多くを達成するのに役立ちます。それは常にドライバーではなく、プロモーターでした。蒸気エンジンの時代からインターネットバブル時代まで、テクノロジーの力は、問題の解決に役立つ範囲にあります。人工知能(AI)および最近では生成AIも例外ではありません

コンピュータービジョンのためのGoogleGeminiの力を活用:包括的なガイド 大手AIチャットボットであるGoogle Geminiは、その機能を会話を超えて拡張して、強力なコンピュータービジョン機能を網羅しています。 このガイドの利用方法については、

2025年のAIランドスケープは、GoogleのGemini 2.0 FlashとOpenaiのO4-Miniの到着とともに感動的です。 数週間離れたこれらの最先端のモデルは、同等の高度な機能と印象的なベンチマークスコアを誇っています。この詳細な比較


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック









