【Python】iPad 카메라로 실시간 물체 감지

최근의 스마트폰은 카메라, 가속도·각속도 센서, 기압 센서 등 센서의 덩어리입니다. 이것과 python을 조합하면 간단하게 실세계의 상태를 관측하는 것이 가능하게 됩니다.
이 기사에서는 파이썬에서 iPad의 카메라에서 보이는 물체가 무언가를 인식시키는 방법을 설명합니다.

필요한 것은 다음과 같습니다.

① iOS 기기
iPad 또는 iPhone. iPad가 화면이 크기 때문에 조작하기 쉽습니다.

② iOS 환경에서 파이썬을 실행하기위한 앱 "Pyto"
기본 상태에서 이미지 분석에 사용되는 모듈 (Open CV)이 설치되어 있기 때문에 편리합니다. 유료 1220엔(2020.11월 현재)입니다만, 3일의 시험 기간에서도 아래의 스크립트는 실행 가능하므로 시험해 주세요.

Pyto App Store 링크

1. 파이토 설치



app store에서 "Pyto -Python 3"을 설치합니다.
유료 또는 3일 한정 시험을 선택할 수 있습니다. 평가판으로도 문제 없습니다.

환경
端末:iPad Air 3
OS:iPad OS 14.1
Pyto:14.1.1

2. 파일 만들기



샘플 코드는 다음과 같습니다. OpenCV는 이미지와 동영상을 처리하는 데 필요한 기능이 구현 된 라이브러리입니다. 여기를 사용하여 iPad의 카메라에 비치는 물체가 무언가를 감지합니다.

objectDitection.py

import cv2
from cv2 import dnn
import numpy as np
import time
import os

inWidth = 224
inHeight = 224
WHRatio = inWidth / float(inHeight)
inScaleFactor = 0.017
meanVal = (103.94, 116.78, 123.68)
prevFrameTime = None
currentFrameTime = None
device = 0

if __name__ == "__main__":
   modelfolder = "./MobileNet-Caffe-master"
   net = dnn.readNetFromCaffe(
       os.path.join(modelfolder, "mobilenet_v2_deploy.prototxt"),
       os.path.join(modelfolder, "mobilenet_v2.caffemodel"),
   )
   cap = cv2.VideoCapture(device)
   f = open(os.path.join(modelfolder, "synset.txt"), "r")
   classNames = f.readlines()
   showPreview = True

   while cap.isOpened():
       # capture frame-by-frame
       ret, frame = cap.read()
       # check if frame is not empty
       if not ret:
           # print("continue")
           continue
       frame = cv2.autorotate(frame, device)
       rgbFrame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
       blob = dnn.blobFromImage(rgbFrame, inScaleFactor, (inWidth, inHeight), meanVal)
       net.setInput(blob)
       detections = net.forward()

       maxClassId = 0
       maxClassPoint = 0
       for i in range(detections.shape[1]):
           classPoint = detections[0, i, 0, 0]
           if classPoint > maxClassPoint:
               maxClassId = i
               maxClassPoint = classPoint

       className = classNames[maxClassId]
       # print("class id: ", maxClassId)
       # print("class point: ", maxClassPoint)
       # print("name: ", className)
       prevFrameTime = currentFrameTime
       currentFrameTime = time.time()
       if prevFrameTime != None:
           i = 1
           # print(1.0 / (currentFrameTime - prevFrameTime), "fps")

       if showPreview:
           font = cv2.FONT_HERSHEY_SIMPLEX
           size = 1
           color = (255, 255, 255)
           weight = 2
           cv2.putText(frame, className, (10, 30), font, size, color, weight)
           cv2.putText(frame, str(maxClassPoint), (10, 60), font, size, color, weight)
           cv2.imshow("detections", frame)


3. 물체 감지 학습된 파일을 iPad에 다운로드



이번에는 이하의 물체 검출 라이브러리를 사용하겠습니다.
https://github.com/shicai/MobileNet-Caffe에서 MobileNet-Caffe-master
다운로드. 이것을 실행 파일과 동일한 디렉토리에 저장합니다.

① iOS에서 위 링크에서 파일 다운로드
② zip 파일을 확장(iOS13 이상에서 가능)
③ 파일을 실행 파일이 있는 디렉토리로 이동(기본적으로 icloud/pyto입니다)

4. 폴더에 대한 사용 권한



pyto의 설정에서 다음 절차에 따라 "pyto 실행 파일이있는 폴더", "MobileNet-Caffe-master가있는 폴더"에 액세스 권한을 부여합니다.







5. 실행



오른쪽 상단에 실행 버튼을 누르면 콘솔에 화면이 표시됩니다.
환경 구축이나 모듈의 설치조차 필요 없기 때문에 정말로 3분 할 수 있습니다!
또한 Pyto의 기능으로서 Siri로부터의 스크립트 실행 호출 등에도 대응하고 있습니다.

참고로 한 기사
htps : // 기주 b. 코 m / 카이 / 모비 네 t 카후
h tps:// 퀵했다. 작은 m/산 전망 0268/있어 MS/그림 1172d25072타 1687C49
ht tp // 아스키 아. bgs포 t. 이 m/2018/03/오펜 CVDD py 텐모비오네 t. HTML

좋은 웹페이지 즐겨찾기