検索
ホームページテクノロジー周辺機器AIAI 仮想ジェスチャーで飛行機戦闘をプレイ

AI 仮想ジェスチャーで飛行機戦闘をプレイ

May 17, 2023 am 11:34 AM
ai計算する仮想ジェスチャー

###こんにちは、みんな。

この小さなプロジェクトを分解して、実装を段階的に説明していきます。記事の最後に、プロジェクトの完全なソース コードを入手します。

1. 航空機戦争プログラムの準備

Github で航空機戦争プログラムの Python バージョンを見つけ、Pygame をインストールして実行します。

AI 仮想ジェスチャーで飛行機戦闘をプレイ

ゲームの操作は簡単で、右上にゲームの一時停止/開始ボタンがあり、マウスでクリックすることで操作できます。

キーボードの A、D、W、S キーは、それぞれ左、右、上、下に対応し、航空機の移動方向を制御するために使用されます。

したがって、AI プログラムは 2 つのコア機能を完了する必要があります。1 つはジェスチャーを認識することであり、2 つ目はジェスチャーをマウスとキーボードの操作に変換してゲームを制御することです。

2. ジェスチャを認識する

ここでは、opencv を使用してカメラからビデオ ストリームを読み取ります。

ビデオ ストリームの各フレームをメディアパイプの手のひら検出モデルに送信して、手のひらの 21 のキー ポイントを識別します。

AI 仮想ジェスチャーで飛行機戦闘をプレイ

私たちのプロジェクトでは、左右の 8 番目と 12 番目のポイントである人差し指と中指のみを使用します。

コア コードは次のとおりです。

ret, frame = cap.read()
results = hands.process(frame[:, :, ::-1])
if results.multi_hand_landmarks:
# 遍历每个手掌
for hand_landmarks in results.multi_hand_landmarks:
finger_axis_8 = hand_landmarks.landmark[8]
finger_axis_12 = hand_landmarks.landmark[12]

frame はビデオ ストリーム内の各フレームで、hands は手のひら検出モデルです。

解析された Finger_axis_8 オブジェクトと Finger_axis_12 オブジェクトには、人差し指と中指の x 座標と y 座標がそれぞれ保存されます。

3. ゲームを一時停止するジェスチャー コントロール

人差し指と中指の座標間の距離を計算し、それが一定のしきい値より大きい場合は、マウスを移動して一時停止をクリックします。ゲームボタン。

AI 仮想ジェスチャーで飛行機戦闘をプレイ

ゲーム一時停止

人差し指と中指の座標間の距離が一定のしきい値未満の場合、マウスを移動して開始をクリックします。ゲーム ボタン

AI 仮想ジェスチャーで飛行機戦闘をプレイ

ゲーム スタート

距離の計算は非常に簡単です。コードはここには投稿しません。焦点は Python によるマウス制御です。

私は PyUserInput ライブラリを使用します。このライブラリには、マウスとキーボードをそれぞれ制御するための 2 つのクラス PyMouse と PyKeyboard が用意されています。

Python プログラムを使用してゲームの一時停止と開始を制御するには、マウスをボタンの位置に移動してクリック操作を行うだけです。

# 定义鼠标对象
self.mouse = PyMouse()

def pause_or_start_game(self, dist):
"""
判断是否需要暂停(开始)游戏
:param dist:
:return:
"""
if (not self.is_pause and dist > 80) or (self.is_pause and dist < 80):
self.mouse.move(915, 125)
self.mouse.click(915, 125)

self.is_pause = not self.is_pause

pause_or_start_game 関数のパラメータ dist は、人差し指と中指の間の距離です。

一時停止/開始ボタンの座標は (915, 125) です。各コンピュータの座標は異なります。実際の状況に応じて再計算する必要があります。

計算の考え方は非常に単純です。ゲームの境界サイズは (480, 700) で、ゲームは画面の中央から開始されます。画面のサイズが得られれば、座標はボタンの数は大まかに見積もることができます。 PyMouse の move 関数を呼び出した後、確認して微調整します。

PyMouse の move 関数はマウスの位置を移動するために使用され、click 関数はマウスのクリック操作を実行するために使用されます。

4. 航空機の動きのジェスチャー制御

ここでは、隣接する 2 つのフレームにおける人差し指の x 座標と y 座標の移動方向と距離を計算する必要があります。これにより、キーボード A、D、W、S のどれが押されたかが決まります。

同様に、移動の方向と距離も非常に単純なのでここでは説明しませんが、焦点は PyKeyboard モジュールによるキーボードのキーの制御にあります。

self.key_board = PyKeyboard()
# 按下按键
self.key_board.press_key(key)
# 停留一段时间
time.sleep(press_dwell)
# 释放按键
self.key_board.release_key(key)

press_key 関数と release_key 関数の間で、キーの持続時間を制御するために time.sleep(press_dwell) が呼び出されます。キーを長く押すと、機体の移動距離が長くなります。逆に、キー時間が短い場合、航空機の移動距離は短くなります。

したがって、ここでの困難は、人差し指の移動距離をキーを押している時間にどのようにマッピングするかということです。

次のコードを使用して測定しました

for i in range(n):
kb.press_key('A')
time.sleep(0.05)
kb.release_key('A')

固定キーの継続時間は 0.05 秒で、テスト航空機は中央から左端に移動します。これには最小の n が必要です。

AI 仮想ジェスチャーで飛行機戦闘をプレイ

機体は中央から左端に移動し、移動距離は 240 です。したがって、1 回あたりの機体の移動距離は 240 / (n * 0.05) となります。 2番。

n=7 を測定したため、航空機の 1 秒あたりの移動距離は 685.7142857 となります。

人差し指の移動距離を計算して 685.7142857 で割れば、キーボードのキーの長さを求めることができます。

航空機の動きのジェスチャー制御の完全なコードは次のとおりです:

def press_key_board(self, direction, move_dist):
"""
将手指移动距离,换算为按键间隔,并执行按键操作
:param direction:移动方向
:param move_dist:移动距离
:return:
"""
dist_per_sec = 685.7142857
if direction == 'x':
key = 'A' if move_dist < 0 else 'D'
elif direction == 'y':
key = 'W' if move_dist < 0 else 'S'
else:
return

press_dwell = math.fabs(move_dist / dist_per_sec)
self.key_board.press_key(key)
time.sleep(press_dwell)
self.key_board.release_key(key)

プロジェクトの中核部分は説明され、完全なコードは整理されました。必要な場合は、そのままにしておいてください。コメント欄にメッセージを。

コードを取得したら、まず実行中のsteps.txtを確認します。

この記事が役に立ったと思われる場合は、「読む」をクリックして励みにしてください。今後も優れた Python AI プロジェクトを共有していきます。

以上がAI 仮想ジェスチャーで飛行機戦闘をプレイの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は51CTO.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
革新を調理する:人工知能がフードサービスを変革する方法革新を調理する:人工知能がフードサービスを変革する方法Apr 12, 2025 pm 12:09 PM

食品の準備を強化するAI まだ初期の使用中ですが、AIシステムは食品の準備にますます使用されています。 AI駆動型のロボットは、ハンバーガーの製造、SAの組み立てなど、食品の準備タスクを自動化するためにキッチンで使用されています

Pythonネームスペースと可変スコープに関する包括的なガイドPythonネームスペースと可変スコープに関する包括的なガイドApr 12, 2025 pm 12:00 PM

導入 Python関数における変数の名前空間、スコープ、および動作を理解することは、効率的に記述し、ランタイムエラーや例外を回避するために重要です。この記事では、さまざまなASPを掘り下げます

ビジョン言語モデル(VLM)の包括的なガイドビジョン言語モデル(VLM)の包括的なガイドApr 12, 2025 am 11:58 AM

導入 鮮やかな絵画や彫刻に囲まれたアートギャラリーを歩くことを想像してください。さて、各ピースに質問をして意味のある答えを得ることができたらどうでしょうか?あなたは尋ねるかもしれません、「あなたはどんな話を言っていますか?

MediaTekは、Kompanio UltraとDimenity 9400でプレミアムラインナップをブーストしますMediaTekは、Kompanio UltraとDimenity 9400でプレミアムラインナップをブーストしますApr 12, 2025 am 11:52 AM

製品のケイデンスを継続して、今月MediaTekは、新しいKompanio UltraやDimenity 9400を含む一連の発表を行いました。これらの製品は、スマートフォン用のチップを含むMediaTekのビジネスのより伝統的な部分を埋めます

今週のAIで:Walmartがファッションのトレンドを設定する前に設定します今週のAIで:Walmartがファッションのトレンドを設定する前に設定しますApr 12, 2025 am 11:51 AM

#1 GoogleはAgent2Agentを起動しました 物語:月曜日の朝です。 AI駆動のリクルーターとして、あなたはより賢く、難しくありません。携帯電話の会社のダッシュボードにログインします。それはあなたに3つの重要な役割が調達され、吟味され、予定されていることを伝えます

生成AIは精神障害に会います生成AIは精神障害に会いますApr 12, 2025 am 11:50 AM

私はあなたがそうであるに違いないと思います。 私たちは皆、精神障害がさまざまな心理学の用語を混ぜ合わせ、しばしば理解できないか完全に無意味であることが多い、さまざまなおしゃべりで構成されていることを知っているようです。 FOを吐き出すために必要なことはすべてです

プロトタイプ:科学者は紙をプラスチックに変えますプロトタイプ:科学者は紙をプラスチックに変えますApr 12, 2025 am 11:49 AM

今週公開された新しい研究によると、2022年に製造されたプラスチックの9.5%のみがリサイクル材料から作られていました。一方、プラスチックは埋め立て地や生態系に積み上げられ続けています。 しかし、助けが近づいています。エンジンのチーム

AIアナリストの台頭:これがAI革命で最も重要な仕事になる理由AIアナリストの台頭:これがAI革命で最も重要な仕事になる理由Apr 12, 2025 am 11:41 AM

主要なエンタープライズ分析プラットフォームAlteryxのCEOであるAndy Macmillanとの私の最近の会話は、AI革命におけるこの重要でありながら過小評価されている役割を強調しました。 MacMillanが説明するように、生のビジネスデータとAI-Ready情報のギャップ

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

DVWA

DVWA

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境