Com a webcam a funcionar e com tanta coisa em comum com a comunidade Raspberry Pi ocorreu-me experimentar o OpenCV e testar as capacidades do EV3 no campo da Computer Vision.
E afinal nem é muito difícil começar: segundo o artigo ‘Face Recognition With Python, in Under 25 Lines of Code‘ são mesmo suficientes menos de 25 linhas de código em Python.
Em vez de instalar o opencv todo, instalei apenas o módulo para python:
root@ev3dev:~# apt-get install python-opencv
Depois foi só criar o script ‘teste-opencv.py’:
import numpy as np import cv2 imagePath = "/root/teste-face.jpg" cascPath = "/root/haarcascade_frontalface_default.xml" resultPath ="/root/resultado.jpg" faceCascade = cv2.CascadeClassifier(cascPath) image = cv2.imread(imagePath) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale( gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags = cv2.cv.CV_HAAR_SCALE_IMAGE ) print "Found {0} faces!".format(len(faces)) # Draw a rectangle around the faces for (x, y, w, h) in faces: cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2) cv2.imwrite(resultPath,image)
Como não instalei o opencv não tenho os ficheiros xml com regras de classificação. Para este exemplo o autor do artigo referido disponibiliza também o ficheiro ‘haarcascade_frontalface_default.xml‘.
Para esta foto ‘teste-face.jpg’:
O resultado do script, ao fim de 3 a 5 minutos de CPU a 80% foi este: