Back-End

6 dez, 2017

Rastreando objetos azuis com Opencv e Python

Publicidade

Opencv é uma incrível biblioteca de visão de computador de código aberto. Hoje vamos hackear um pouco com isso. A ideia é rastrear objetos azuis. Por que objetos azuis? Talvez porque eu tenha alguns deles na minha mesa.

Vamos começar.

A ideia é simples. Vamos criar uma máscara. Nossa máscara é uma imagem em preto e branco onde cada pixel azul se transformará em um branco e o restantes dos pixels será preto.

Quadro original:

Mascarado:

Agora, só precisamos colocar um retângulo delimitador em torno do objeto azul.

import cv2
import numpy
 
cam = cv2.VideoCapture(0)
kernel = numpy.ones((5 ,5), numpy.uint8)
 
while (True):
    ret, frame = cam.read()
    rangomax = numpy.array([255, 50, 50]) # B, G, R
    rangomin = numpy.array([51, 0, 0])
    mask = cv2.inRange(frame, rangomin, rangomax)
    # reduce the noise
    opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
 
    x, y, w, h = cv2.boundingRect(opening)
 
    cv2.rectangle(frame, (x, y), (x+w, y + h), (0, 255, 0), 3)
    cv2.circle(frame, (x+w/2, y+h/2), 5, (0, 0, 255), -1)
 
    cv2.imshow('camera', frame)
 
    k = cv2.waitKey(1) & 0xFF
 
    if k == 27:
        break

E isso é tudo. Um bom hack para um domingo de manhã

Código fonte na minha conta do Github

***

Gonzalo Ayuso faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://gonzalo123.com/2017/11/20/tracking-blue-objects-with-opencv-and-python/