目錄
準備飛機大戰程序
人臉辨識
人臉姿態估計
姿態控制飛機移動
首頁 科技週邊 人工智慧 人臉辨識還能這麼玩

人臉辨識還能這麼玩

May 11, 2023 pm 12:34 PM
鍵盤 按鍵 人臉辨識

今天我們來擴充一下,用人臉玩飛機大戰。雖然想法跟手勢辨識類似,但代碼量比手勢辨識版稍多。

使用的人臉演算法是毫秒的,幀率能到 30,用電腦CPU運作也很流暢。

下面我分享下專案實作過程,文末取得專案完整的原始碼。

準備飛機大戰程序

Github上找到一個Python版本的飛機大戰程序,安裝Pygame即可運作。

人臉辨識還能這麼玩

用鍵盤的A、D、W、S鍵用來控制飛機的移動方向,分別對應左、右、上、下。

所以,接下來我們要做的是辨識人臉,並對人臉姿態進行估計,將估計後的結果映射到左、右、上、下,從而控制飛機的運行。

人臉辨識

這裡,我們用opencv讀取攝影機中的視訊串流。

將視訊串流中的每個畫面送入mediapipe中的人臉辨識模型,進行辨識。

人臉辨識還能這麼玩

圖片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)
登入後複製

這裡有個小知識點需要大家注意。

程式碼中用draw_zh_img來顯示中文,由於opencv不支援直接顯示中文。因此,我用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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

底線在鍵盤上怎麼打 如何不打字只打底線 底線在鍵盤上怎麼打 如何不打字只打底線 Feb 22, 2024 pm 07:46 PM

將輸入法調至英文後按住Shift鍵和減號鍵即可。教學適用型號:聯想AIO520C系統:Windows10專業版版本:MicrosoftOfficeWord2022解析1先檢查輸入法的中英文打字,調整至英文。 2然後同時按住鍵盤上的Shift鍵和減號鍵。 3檢查介面,即可查看已打出的底線。補充:Word文件如何快速輸入底線1如果需要在Word中輸入下劃線,用滑鼠選取空格後,選擇字體選單中選擇底線類型即可輸入。總結/注意事項一定要先將輸入法換至英文再進行操作,否則無法成功輸入底線。

如何透過快捷鍵開啟右鍵選單 如何透過快捷鍵開啟右鍵選單 Jan 14, 2024 pm 03:12 PM

當我們滑鼠暫時失去作用的時候,如何用鍵盤快捷鍵的方式打開右鍵選單呢?有兩種方法,一是按Shift+F10快捷鍵就可以調處右鍵選單,二是鍵盤上windows和ctrl中間帶著目錄的鍵也可以,具體的教學下面一起來看看吧。用鍵盤快速鍵開啟右鍵選單的方式第一種方法1、在電腦桌面中不選擇任何檔案時,按下鍵盤上的下圖紅色圈標註的按鍵,此按鍵為快速開啟右鍵選單的按鍵。 2、即可將桌面的右鍵選單打開,如果需要選擇其中的項目,再用滑鼠選取即可第二種方法1、其實我們使用「Shift+F10」快捷鍵就可以調處右鍵選單2

Windows筆記型電腦上的鍵盤自動打字 Windows筆記型電腦上的鍵盤自動打字 Feb 19, 2024 pm 05:33 PM

電腦的輸入設備如鍵盤和滑鼠都需要人類操作,不能獨立運作。 Windows筆記型電腦上的觸控板和鍵盤也是一樣。文字不會自動輸入,滑鼠也不會自動點擊。若發生異常情況,一定有原因。如果遇到筆記型電腦鍵盤自動輸入問題,請按照指南進行修復。 Windows筆記型電腦上的鍵盤會自動打字當您的Windows筆記型電腦上的鍵盤自動打字時,您可以透過以下方式進行修復。手動檢查鍵盤確保鍵盤工作正常檢查筆記型電腦是否已遠端連接檢查是否有任何自動打字程式正在運行運行惡意軟體掃描調整鍵盤設定重新安裝鍵盤驅動程式讓我們詳細了解

邁從 K87 三模機械鍵盤新增「風信子軸」「冰淇淋軸」版:Gasket 結構,首發價 299 元起 邁從 K87 三模機械鍵盤新增「風信子軸」「冰淇淋軸」版:Gasket 結構,首發價 299 元起 Feb 29, 2024 pm 05:00 PM

本站2月29日消息,邁從今日為K87三模機械鍵盤推出了“風信子軸”“琉光冰淇淋軸”兩款版本,該鍵盤主打“Gasket結構、80%配列”,相關軸體鍵盤價格資訊如下:「風信子軸」版:首發價299元「琉光冰淇淋軸」版:首發價379元據介紹,系列鍵盤使用Gasket結構,採用87鍵80%配列,全鍵無衝,支持熱插拔,號稱選用“原廠/MDA雙色PBT鍵帽”,使用1.2mm單鍵開槽PCB(下燈位),配備RGB燈效,並擁有磁吸收納銘牌設計。此外,這款鍵盤配備6000毫安培電池,無線延遲3ms,官方未公佈鍵盤尺寸及

如何在Windows 11的任何鍵盤上指派Copilot按鈕 如何在Windows 11的任何鍵盤上指派Copilot按鈕 Feb 20, 2024 am 10:33 AM

未來幾個月將推出的Windows11電腦鍵盤上將新增一個Copilot鍵。此鍵可讓使用者在不升級新PC的情況下,透過按下指定按鈕輕鬆進入副駕駛模式。本指南將詳細介紹如何在任何Windows11鍵盤上設定副駕駛按鈕。微軟近日宣布,他們在推動人工智慧輔助駕駛方面取得了重要進展。 Windows11將新增一個專門的Copilot金鑰,進一步提升個人電腦使用者的體驗。這項硬體變化代表了WindowsPC鍵盤三十年來的首次重大升級。接下來幾個月,新的Windows11電腦將會搭載全新的Copilot鍵設計在鍵盤

蘋果手機鍵盤怎麼設定手寫輸入法 蘋果手機鍵盤怎麼設定手寫輸入法 Mar 08, 2024 pm 02:30 PM

蘋果手機鍵盤使用者想要設定手寫輸入法,但不知道怎麼操作,其實是很簡單的,使用者可以在手機的鍵盤設定直接選擇手寫輸入法輸入,如果沒有也可以手動加入手寫輸入法。蘋果手機鍵盤怎麼設定手寫輸入法答:在鍵盤設定中直接啟用手寫輸入法1、蘋果用戶在使用輸入法的時候,預設是會開啟手寫輸入法的。 2.用戶只需要在打字的時候直接點擊左下角長按選擇手寫輸入法就可以了。 3.如果使用者的手機裡面沒有手寫輸入法也可以進行手動的新增。 4.用戶進入設定找到通用鍵盤設定在第一個鍵盤裡面添加手寫輸入的選項就可以了。 5.使用手寫輸入法可

VGN 聯名《艾爾登法環》鍵鼠系列產品上架:菈妮 / 褪色者定制主題,首發 99 元起 VGN 聯名《艾爾登法環》鍵鼠系列產品上架:菈妮 / 褪色者定制主題,首發 99 元起 Aug 12, 2024 pm 10:45 PM

本站8月12日消息,VGN於8月6日推出了聯名《艾爾登法環》鍵鼠系列產品,包含鍵盤、滑鼠和滑鼠墊,採用菈妮/褪色者客製化主題設計,目前系列產品已上架京東,售價99元起。本站附聯名新品資訊如下:VGN丨艾爾登法環S99PRO鍵盤此鍵盤採用純鋁合金外殼,輔以五層消音結構,使用GASKET板簧結構,擁有單鍵開槽PCB、原廠高度PBT材質鍵帽、鋁合金個人化背板;支援三模連接和SMARTSPEEDX低延遲技術;接入VHUB,可一站式管理多款設備,首發549元。 VGN丨艾爾登法環F1PROMAX無線滑鼠該滑鼠

微信鍵盤怎麼設定皮膚 微信鍵盤皮膚的設定方法 微信鍵盤怎麼設定皮膚 微信鍵盤皮膚的設定方法 Mar 13, 2024 am 09:04 AM

  微信鍵盤怎麼設定皮膚?微信鍵盤是一款非常聰明的手機輸入法軟體,這個軟體上面有好多人性化的功能,它可以讓用戶自己選擇輸入模式,還可以在這個軟體上面以最快的速度找到自己想要的表情然後發出去。這個軟體上面還可以讓用戶自己更換鍵盤的皮膚,很多用戶都還不太清楚要怎麼更換皮膚,下面小編整理了皮膚的更換方式供大家參考。微信鍵盤皮膚的設定方法在手機的微信、簡訊或其他需要使用鍵盤的應用程式中,您可以點擊鍵盤左上角的輸入法設定圖標,進入設定頁面查看各種輸入法的功能設定選項。  2、在輸入法的設定頁點選「個性皮膚

See all articles