PictoBlox에서 얼굴 감지를 위한 Python 함수
PictoBlox에서 Python용 얼굴 감지 기능을 사용하려면 먼저 얼굴 감지 오브젝트를 빌드해야 합니다. 이를 위해 다음 단계를 따르십시오.
- 먼저 PictoBlox에서 새 프로젝트를 만들고 코딩 환경으로 Python Coding을 선택합니다.
- 이제 스크립팅 영역에 아래 코드를 작성합니다. 이 코드는 얼굴 인식 개체를 빌드하고 변수 ‘ fd ‘에 저장합니다.
- 이제 얼굴 인식 기능을 구축하기 위해 얼굴 인식 개체를 포함하는 변수 ‘ fd ‘를 사용합니다.
얼굴 감지 기능
얼굴 감지를 실행하기 위해 두 가지 기능을 사용할 수 있습니다. 하나는 카메라에서 얼굴을 감지하고 다른 하나는 스테이지에서 얼굴을 감지합니다.
- 카메라에서 얼굴을 감지하려면 다음을 사용하십시오.
- 무대에서 얼굴을 감지하려면 다음을 사용하십시오.
위의 두 기능은 (카메라 또는 무대에서) 이미지를 분석하고 컴퓨터 비전과 유사한 다른 기능을 사용하여 액세스할 수 있는 얼굴 정보를 로컬에 저장합니다.
카메라나 스테이지에서 새로운 이미지를 분석하고 싶을 때마다 이 기능을 실행해야 합니다.
카메라 피드 제어
다음 기능을 사용하여 스테이지에서 카메라 피드를 제어할 수 있습니다.
fd.video("on", 0)
이 함수에는 다음과 같이 변경할 수 있는 두 개의 매개변수가 있습니다.
- 카메라 상태 :
- off – 스테이지의 비디오 피드가 중지됩니다.
- on – 스테이지의 비디오 피드가 시작됩니다.
- on flipped – 스테이지의 비디오 피드는 미러링된 비디오로 시작됩니다. 따라서 오른손은 왼손으로 표시되고 그 반대도 마찬가지입니다.
- 투명도: 이 매개변수는 비디오를 반투명하게 만듭니다. 0에서 100 사이의 값을 줄 수 있습니다.
- 값이 ‘0’이면 카메라 피드가 스테이지에 있는 그대로 표시됩니다.
- 값이 ’50’이면 카메라 피드가 반투명합니다.
- 값이 ‘100’이면 카메라 피드가 스테이지에서 완전히 사라집니다.
매개변수를 편집하고 이 블록을 직접 사용해 보십시오.
예 – 스테이지에서 이미지 분석
이 항목에서는 다음 이미지를 분석합니다.
- 여기에서 이미지 다운로드: https://ql.reallyai.net/wp-content/uploads/2022/02/Boy-and-Girl.jpg
- PictoBlox에서 fd.video() 함수를 실행하고 그림과 같이 첫 번째 매개변수 ‘off’를 선택하여 카메라를 끕니다.
fd.video("off", 0)
- 그런 다음 Upload Backdrop 버튼을 클릭하여 다운로드한 이미지를 배경으로 업로드합니다.
- Tobi sprite를 선택하고 숨깁니다.
- 다음과 같은 스테이지를 찾을 수 있습니다.
- 이제 스테이지 영역의 이미지를 분석하기 위해 함수 analysestage()를 사용합니다.
fd.analysestage()
- 이제 얼굴 감지에서 이미지를 분석할 때 어떤 결과를 얻는지 살펴보겠습니다.
얼굴 수(#) 얻기
이미지를 분석한 후에는 count() 함수를 사용하여 이미지에서 인식된 얼굴 수를 얻을 수 있습니다.
fd.count()
감지된 얼굴의 수를 출력하려면 PictoBlox의 터미널에서 먼저 fd.count()의 출력을 문자열로 변환해야 합니다. 파이썬의 내장 함수 str()을 사용하여 이 작업을 수행합니다. 마지막으로 print() 함수를 사용하여 그림과 같이 터미널에 출력합니다.
print(str(fd.count()))
Get expression of face ()
카메라에서 얼굴 표정을 얻기 위해 expression() 함수를 사용할 수 있습니다. 이 기능은 선택한 얼굴의 인식된 표정을 보고합니다. 선택한 얼굴이 감지되지 않으면 NULL을 보고합니다.
fd.expression()
스프라이트 함수 say()를 사용하여 카메라에서 감지된 감정을 스프라이트가 말하게 할 수 있습니다.
sprite.say()
전체 코드는 표시된 대로 다음 코드를 포함해야 합니다.
sprite = Sprite('Stage')
isexpression(얼굴_숫자, 감정)
특정 얼굴에 특정 감정이 있는지 확인하기 위해 isexpression() 함수를 사용할 수 있습니다. 감정이 일치하면 블록은 true 값을 반환하고 그렇지 않으면 false 값을 반환합니다.
이 함수에는 isexpression(얼굴 번호, 감정)과 같은 두 개의 매개변수가 있습니다. 첫 번째 파라미터는 분석하고자 하는 얼굴 번호를 의미하고, 두 번째 파라미터는 얼굴에서 확인해야 할 감정의 일련 번호를 의미합니다.
예시:
이미지에서 얼굴 1의 감정이 행복한지 여부를 확인하려면 다음과 같이 코딩합니다.
fd.isexpression(1, 4)
마찬가지로, 이미지의 얼굴 1에 대해 감정이 화가 났는지 여부를 확인하려면 다음과 같이 코딩합니다.
fd.isexpression(1, 1)
얼굴의 위치 얻기
x 좌표, y 좌표, 너비 및 높이와 같이 감지된 얼굴의 다양한 속성을 얻기 위해 다양한 얼굴 감지 기능을 사용합니다.
- X 위치: fd.x(1)
- Y 위치: fd.y(1)
- 너비: fd.width(1)
- 높이: fd.height(1)
위의 4가지 기능 모두 얼굴 번호를 나타내는 단일 매개변수를 가집니다.
이러한 기능을 사용하여 다음과 같이 얼굴의 경계 상자를 만들 수 있습니다.
얼굴 감지기를 만들어 다음 주제에서 동일한 작업을 수행하는 방법을 배웁니다.
얼굴의 랜드마크 위치 파악
얼굴 감지 모듈을 사용하여 PictoBlox에서 감지된 각 얼굴에는 아래 이미지와 같이 랜드마크(1에서 68까지)가 있습니다.
아래 두 함수를 사용하여 모든 얼굴에 대해 이러한 랜드마크의 x 및 y 위치를 얻을 수 있습니다.
- x 위치를 얻으려면:
- y 위치를 얻으려면:
예시:
첫 번째 이미지, 20번째 랜드마크의 x 위치를 얻기 위해 다음과 같이 코딩합니다.
fd.landmarkx(1, 20)
두 번째 이미지의 y 위치와 첫 번째 랜드마크를 얻기 위해 다음과 같이 코딩합니다.
fd.landmarky(2, 1)
결론
PictoBlox의 다양한 파이썬 기능을 살펴보며 얼굴 이미지를 분석하고 핵심 정보를 추출했습니다. 다음 강의에서는 감지된 얼굴에 경계 상자를 그리는 방법과 표정을 보고하는 방법을 알아봅니다.