import cv2
arquivo_padrao_reconhecimento = cv2.CascadeClassifier('/home/meulocal/cascade.xml')
print 'iniciando deteccao'
#img eh a imagem que utilizamos para a buscar o padrao gravado no arquivo cascade.xml
img = cv2.imread('/home/meulocal/foto_detectar.jpg')
#somente removendo os canais de cor. nao serao usados
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#em alguns casos, é interessante equalizar o histograma. A opencv possui esse filtro
#os parametros enviados abaixo sao a imagem em escala de cinza, o fator de escala
# e o numero de vizinhos. O numero de vizinhos está relacionado com a precisao da
#deteccao e o fator de escala é a reducao proporcional do objeto na imagem procurada.
resultado = arquivo_padrao_reconhecimento.detectMultiScale(gray, 1.05, 3)
for (x,y,w,h) in resultado:
print 'objeto encontrado'
#marcando o objeto com um retangulo onde foi encontrado
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
#salvando a imagem, com os retangulos
cv2.imwrite('/home/meulocal/imagem_marcada.jpg', img)
print 'fim da rotina'