人臉辨識還能這麼玩
今天我們來擴充一下,用人臉玩飛機大戰。雖然想法跟手勢辨識類似,但代碼量比手勢辨識版稍多。
使用的人臉演算法是毫秒的,幀率能到 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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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