Lesson Progress
0% Complete
이 활동에서는 객체 감지를 수행할 코드를 작성합니다. 개체 감지는 PictoBlox 스테이지에 배경으로 업로드한 이미지에서 수행됩니다.
이 코드는 감지된 개체의 위치에서 사각형 상자를 하나씩 이동하고 사각형 상자가 개체의 클래스를 말하도록 합니다.
코딩하자
- Pictoblox 에서 새 파일을 열고 Python Coding 환경을 선택합니다.
- Choose a sprite 버튼(오른쪽 하단 모서리)을 클릭하고 스프라이트 Square Box를 선택합니다.
- 이 세션에서는 아래 이미지에서 객체 감지를 수행합니다.
- 이를 위해 먼저 아래 단계에 따라 이 이미지를 PictoBlox의 배경으로 업로드하십시오.
- 위의 이미지를 마우스 오른쪽 버튼으로 클릭하고 save image as 옵션을 선택하여 컴퓨터에 다운로드하십시오.
- Choose a Backdrop 버튼(오른쪽 하단 모서리) 위에 마우스를 놓고 Upload Backdrop 옵션을 선택합니다.
- 방금 다운로드한 이미지를 선택하고 Open을 클릭합니다.
- Python(베타 탭)을 클릭합니다.
- 프로젝트 파일에서 Square Box.py를 클릭합니다. 이제 이미지가 배경으로 업로드되었습니다.
- 스프라이트 객체 ‘Square Box’는 이미 기본적으로 시작됩니다. 시간 라이브러리를 가져오겠습니다.
sprite = Sprite('Square Box') import time
- 이제 ObjectDetection 개체와 Pen 개체도 시작하겠습니다.
obj = ObjectDetection() pen = Pen()
- 이제 pen.clear()를 사용하여 이전 세션의 펜 표시를 지울 것입니다.
pen.clear()
- 객체 감지 임계값을 0.5로 설정합니다. 물체 감지를 위해 유지하려는 신뢰 수준(50%)입니다.
obj.setthreshold(0.5)
- 또한 ObjectDetection 클래스에서 다음 두 함수를 추가합니다.
- analysestage(): 스테이지에서 이미지 분석
- disablebox(): 스테이지에 나타나는 개체 주변의 상자를 비활성화합니다.
obj.analysestage() obj.disablebox()
- 이제 이미지의 모든 객체를 하나씩 감지하고 그 위에 Square Box 스프라이트를 배치하려고 합니다. 이를 위해 for 루프를 사용하여 모든 개체를 반복합니다. 이를 위해 다음 기능을 사용합니다.
- 내장 함수 range()는 모든 객체를 반복합니다.
- ObjectDetection 클래스의 count() 함수는 감지된 최대 개체 수를 제공합니다. range() 함수의 end 매개변수가 제외되었으므로 ‘+1’을 추가합니다.
for i in range(1,obj.count()+1):
- 각 객체에 따라 Square Box의 x 위치, y 위치 및 너비를 설정해 보겠습니다. 작업에 다음 기능을 사용합니다.
- sprite.setx() – 스프라이트의 x 위치 설정(Square Box)
- obj.x(i) – 개체 ‘i’의 x 위치 가져오기(1에서 obj.count())
- sprite.sety() – 스프라이트의 y 위치 설정(Square Box)
- obj.y(i) – 개체 ‘i’의 y 위치를 가져옵니다.
- sprite.setsize() – 스프라이트의 크기 설정(Square Box)
- obj.width(i) – 개체 ‘i’의 너비를 가져옵니다.
for i in range(1,obj.count()+1): sprite.setx(obj.x(i)) sprite.sety(obj.y(i)) sprite.setsize(obj.width(i))
- 우리는 또한 사각형 상자(스프라이트)를 만들 것입니다. 감지하는 각 개체의 클래스를 말합니다 .
sprite.say(obj.classname(i))
- 또한 Pen 클래스의 stamp() 함수를 사용하여 감지된 각 객체에 사각형 상자를 표시합니다.
pen.stamp()
- 마지막으로 시간 확장에서 sleep() 함수를 추가하여 각 객체를 감지하는 사이에 약간의 시간을 가집니다.
time.sleep(2)
- 전체 코드는 다음과 같습니다.
sprite = Sprite('Square Box') import time obj = ObjectDetection() pen = Pen() pen.clear() obj.setthreshold(0.5) obj.analysestage() obj.disablebox() for i in range(1,obj.count()+1): sprite.setx(obj.x(i)) sprite.sety(obj.y(i)) sprite.setsize(obj.width(i)) sprite.say(obj.classname(i)) pen.stamp() time.sleep(2)
- Run 버튼을 눌러 코드를 테스트합니다.
객체 감지를 위한 추가 이미지
아래 이미지에서 코드를 실험할 수도 있습니다.
과제
다음 수업으로 넘어가기 전에 작은 과제가 기다리고 있습니다!
이 활동에서 작성한 PictoBlox 프로그램을 웹 사이트에 업로드해야 합니다. 과정을 마친 후 수료증을 받으려면 과제를 제출해야 합니다.
과제를 업로드하려면 아래 단계를 따르세요.
- Browse를 클릭합니다.
- 저장된 프로젝트 파일(.sb3)을 검색하여 선택하고 Open을 클릭합니다.
- Upload를 클릭하여 과제를 제출합니다.
허용되는 파일 유형은 PictoBlox 프로그램에서 생성된 SB3 파일입니다. 허용되는 최대 파일 크기는 5 MB입니다.
행운을 빕니다!