OpenCV

Pyto includes OpenCV. However, video output does not work the exact same way that on computers. Frames are displayed on the console and no other window is presented. So cv2.destroyAllWindows and cv2.waitKey will throw errors.

Pyto specific API

Face detection example

"""
An example of face detection using OpenCV.
"""

import cv2
import sys

casc_path = cv2.data.haarcascades+"haarcascade_frontalface_default.xml"
face_cascade = cv2.CascadeClassifier(casc_path)

device = 1 # Front camera
try:
    device = int(sys.argv[1]) # 0 for back camera
except IndexError:
    pass

cap = cv2.VideoCapture(device)

while cap.isOpened():

    # Capture frame-by-frame
    ret, frame = cap.read()

    # Check if frame is not empty
    if not ret:
      continue

    # Auto rotate camera
    frame = cv2.autorotate(frame, device)

    # Convert from BGR to RGB
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    faces = face_cascade.detectMultiScale(
      frame,
      scaleFactor=1.1,
      minNeighbors=5,
      minSize=(30, 30),
      flags=cv2.CASCADE_SCALE_IMAGE
    )

    # Draw a rectangle around the faces
    for (x, y, w, h) in faces:
      cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

    # Display the resulting frame
    cv2.imshow('frame', frame)