찾다
기술 주변기기일체 포함얼굴 인식은 여전히 ​​이렇게 작동할 수 있습니다

얼굴 인식은 여전히 ​​이렇게 작동할 수 있습니다

May 11, 2023 pm 12:34 PM
건반단추얼굴 인식

오늘은 이를 확장해서 사람 얼굴로 비행기 전투를 해보겠습니다. 동작 인식과 아이디어는 유사하지만 코드 양은 동작 인식 버전에 비해 약간 더 많습니다.

사용된 얼굴 알고리즘은 밀리초 수준이고 프레임 속도는 30에 도달할 수 있으며 컴퓨터 CPU에서 매우 원활하게 실행됩니다.

이제 프로젝트 구현 과정을 공유하고, 기사 마지막 부분에서 프로젝트의 전체 소스 코드를 얻으겠습니다.

항공기 전쟁 프로그램 준비

Github에서 항공기 전쟁 프로그램의 Python 버전을 찾아 Pygame을 설치하고 실행하세요.

얼굴 인식은 여전히 ​​이렇게 작동할 수 있습니다

키보드의 A, D, W, S 키를 사용하여 각각 왼쪽, 오른쪽, 위, 아래에 해당하는 기체의 이동 방향을 제어하세요.

그럼 다음으로 해야 할 일은 얼굴을 인식하고, 얼굴 자세를 추정하고, 추정된 결과를 왼쪽, 오른쪽, 위, 아래로 매핑하여 항공기의 작동을 제어하는 ​​것입니다.

얼굴 인식

여기에서는 opencv를 사용하여 카메라에서 비디오 스트림을 읽습니다.

인식을 위해 비디오 스트림의 각 프레임을 미디어파이프의 얼굴 인식 모델로 보냅니다.

얼굴 인식은 여전히 ​​이렇게 작동할 수 있습니다

사진 미디어파이프는 얼굴을 인식할 수 있을 뿐만 아니라 얼굴에 왼쪽 눈, 오른쪽 눈, 왼쪽 귀, 오른쪽 귀, 코, 입 등 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 51CTO.COM에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Open AI의 최신 GPT 4.1 가족 - 분석 Vidhya에 관한 모든 것Open AI의 최신 GPT 4.1 가족 - 분석 Vidhya에 관한 모든 것Apr 26, 2025 am 10:19 AM

Openai는 강력한 GPT-4.1 시리즈를 공개합니다. 실제 응용 프로그램을 위해 설계된 3 개의 고급 언어 모델 패밀리. 이 중요한 도약 전진

LLM 벤치 마크는 무엇입니까?LLM 벤치 마크는 무엇입니까?Apr 26, 2025 am 10:13 AM

대형 언어 모델 (LLM)은 최신 AI 응용 프로그램에 필수적이되었지만 기능을 평가하는 것은 여전히 ​​어려운 일입니다. 전통적인 벤치 마크는 오랫동안 LLM 성능 측정의 표준 이었지만 RA와 함께

7 작업 Gemini 2.5 Pro는 다른 챗봇보다 더 좋습니다!7 작업 Gemini 2.5 Pro는 다른 챗봇보다 더 좋습니다!Apr 26, 2025 am 10:00 AM

AI 챗봇은 그날까지 더 똑똑하고 점점 더 정교 해지고 있습니다. Google DeepMind의 최신 실험 모델 인 Gemini 2.5 Pro는 AI 챗봇 기능에서 중요한 도약을 나타냅니다. 개선 된 Contex

6 O3 프롬프트 오늘 시도해야 할 프롬프트 - 분석 Vidhya6 O3 프롬프트 오늘 시도해야 할 프롬프트 - 분석 VidhyaApr 26, 2025 am 09:56 AM

OpenAi의 O3 : 추론 및 멀티 모달 기능의 도약 OpenAi의 O3 모델은 AI 추론 기능의 상당한 발전을 나타냅니다. 복잡한 문제 해결, 분석 작업 및 자율 도구 사용을 위해 설계된 O3

나는 캔버 코드를 시도했고 여기에서 어떻게 갔는지 ..나는 캔버 코드를 시도했고 여기에서 어떻게 갔는지 ..Apr 26, 2025 am 09:53 AM

Canva Create 2025 : Canva 코드 및 AI로 디자인 혁명 Canva의 2025 년 이벤트는 상당한 발전을 공개하여 플랫폼을 AI 기반 도구, 엔터프라이즈 솔루션 및 특히 개발자 도구로 확장했습니다. 주요 업데이트에는 Enh

작업용 AI 챗봇 : AI 에이전트가 조용히 앱을 교체하는 방법작업용 AI 챗봇 : AI 에이전트가 조용히 앱을 교체하는 방법Apr 26, 2025 am 09:50 AM

간단한 작업을위한 앱 호핑 시대는 끝납니다. 한 번의 대화로 휴가를 예약하거나 청구서가 자동으로 협상한다고 상상해보십시오. 이것은 AI 에이전트의 힘입니다.

O3 및 O4-Mini : OpenAi의 가장 진보 된 추론 모델O3 및 O4-Mini : OpenAi의 가장 진보 된 추론 모델Apr 26, 2025 am 09:46 AM

Openai의 획기적인 O3 및 O4-Mini 추론 모델 : AGI를 향한 거대한 도약 GPT 4.1 가족 발사의 발 뒤꿈치에서 열린 Openai는 AI : O3 및 O4-Mini 추론 모델에서 최신 발전을 공개했습니다. 이것들은 단지 AI 모델이 아닙니다. 그만큼

llama 4와 autogen으로 AI 요원 구축llama 4와 autogen으로 AI 요원 구축Apr 26, 2025 am 09:44 AM

Llama 4와 Autogen의 힘을 활용하여 지능형 AI 에이전트를 구축 Meta의 Llama 4 Models 제품군은 AI 환경을 변형시켜 지능형 시스템 개발에 혁명을 일으킬 수있는 기본 멀티 모드 기능을 제공합니다. 이 기사는 탐구합니다

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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기