成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

人臉識別還能這么玩

人工智能 人臉識別
它們之間,調用了time.sleep(0.07)控制按鍵的時長,按鍵時間長,則飛機移動距離就長,反之,按鍵時間短,則飛機移動距離就短,大家可以根據自己的需求來調節。

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

使用的人臉算法是毫秒級的,幀率能到 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)控制按鍵的時長,按鍵時間長,則飛機移動距離就長,反之,按鍵時間短,則飛機移動距離就短,大家可以根據自己的需求來調節。

責任編輯:武曉燕 來源: 渡碼
相關推薦

2020-05-09 16:45:56

ping命令Linux

2024-03-25 08:03:32

技術面試ShowMeBug協同編程

2024-10-28 07:10:00

scroll標記前端網格布局

2020-08-14 08:19:25

Shell命令行數據

2017-03-07 09:49:18

存儲

2021-04-01 05:40:53

分庫分表數據庫MySQL

2022-01-04 08:00:48

前端技術Esbuild

2017-12-06 15:14:51

AndroidItemRecyclerVie

2020-01-07 10:35:21

QQQQ群手機QQ

2020-11-16 13:38:31

PostMessage

2021-01-04 14:16:01

小程序地圖騰訊

2016-10-11 09:51:22

Windows桌面圖標

2020-08-27 19:30:39

Chrome瀏覽器

2024-01-18 15:43:37

Linuxaxel工具

2014-07-23 15:48:38

遨游瀏覽器

2025-06-12 10:25:13

Android 16通知欄進度條

2022-02-14 21:58:58

netstatLinuxWindows

2023-12-29 08:17:20

接口類SpringAOP

2019-04-23 10:24:26

瀏覽器 Edge 微軟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕 视频一区 | 亚洲精品乱码久久久久久蜜桃91 | 日韩视频在线观看一区二区 | 欧美久久一区二区三区 | 欧美一区二区三区免费在线观看 | 国产精品一区二区久久 | 日一区二区 | 欧美成人a∨高清免费观看 色999日韩 | 国产国产精品 | 欧美不卡在线 | av手机免费在线观看 | 视频在线一区 | 欧美日韩综合一区 | 在线播放第一页 | 亚洲国产成人精品久久久国产成人一区 | 韩日精品一区 | 成人免费视频在线观看 | 久久不卡| 人人干人人爽 | 国产精品亚洲精品 | av国产在线观看 | 午夜视频网站 | 亚洲欧美激情精品一区二区 | av网站在线播放 | 99在线资源 | 欧洲亚洲一区二区三区 | 九九亚洲 | 三级黄色片在线观看 | 插插宗合网 | 久久精品国产99国产精品 | 一区二区三区四区av | 三级黄色片在线 | 在线欧美日韩 | 日本电影韩国电影免费观看 | 欧美精品一区二区三区在线 | 免费在线看黄视频 | 欧美成人a | 国产亚洲一区二区三区 | 亚洲情综合五月天 | 日韩av一区二区在线观看 | 精品久久久久久亚洲精品 |