sábado, 11 de janeiro de 2014

Speaker Deck

Conheça um novo site de compartilhamento de slides, com um visual Limpo e inovado, eu o considerei muito  melhor que SlideShare, 


https://speakerdeck.com/




quarta-feira, 27 de novembro de 2013

Correção de Gabarito Com Python + SimpleCV

Bom dia Pessoal, Em Pedido ao Nosso Amigo, Rodolpho Macedo dos Santos Comecei um pequeno e 'Simples' algoritmo pra correção de um gabarito, devido a problemas pessoais, não tenho Tempo pra termina-lo, mais espero que ajude, a base já está Pronta e Funcionando, para fazerr mais rápido improvisei e em vez de corrigir a questão e coloquei apenas para capturar as questões da 1º Coluna,

Segue o Exemplo:


from SimpleCV import *
import time

img = Image('gabarito-corpo.jpg')

A,B,C,D,E=0,0,0,0,0

'''
A = x > 180 and x < 205

'''


mod = img.colorDistance(Color.WHITE)
blobs = mod.findBlobs(minsize=50)
if  blobs:
    blobs.draw(color=Color.RED,width=-1)


#mod.drawText("x",x=205,y=1,Color.BLUE) 
'''mude as coordenadas do x para saber as posicoes 
   de B, C , D e assim Consequentemente, observe que a 1 Coluna ja Esta Pronta ''' 

for i in blobs:
    if i.coordinates()[0] > 180 and i.coordinates()[0] < 205:
        A+=1
        
        

print 'Na Primeira Coluna: %i Questoes Corretas!' % (A)

mod.show()
time.sleep(5)


A Imagem do Gabarito Usada:



O Resultado:




quinta-feira, 7 de novembro de 2013

Resolvendo problemas! voltando o relógio e power pra barra do unity 13.10 ou anteriores.

Depois de algumas atualizações do ubuntu 13.10 , me deparei com alguns problemas na barra do unity, como por exemplo o desaparecimento frequente do relógio e do indicador da bateria, Bom Mãos na Massa então!!



 para resolver é mais fácil do que se imagina.





para o indicador da bateria:

sudo apt-get install --reinstall indicator-power

para o indicador do relógio:

sudo apt-get install --reinstall indicator-datetime




quinta-feira, 5 de setembro de 2013

'Simplecv' Desinclinação da Imagem + Normalização + Reconhecimento Optical de Caracteres


OCR é uma tecnologia complexa que converte imagens de texto em formatos editáveis. OCR permite processar livros digitalizados, screenshots e fotos com texto e obter documentos editáveis ​​como TXT, DOC ou PDF. Esta tecnologia é amplamente utilizada em muitas áreas e os sistemas de OCR mais avançados pode lidar com quase todos os tipos de imagens, mesmo tão complexo como páginas de revistas digitalizadas com imagens e colunas ou fotos de um telefone celular.


Segue um exemplo Simples que será feito o reconhecimento de um Objeto na imagem para que seja aplicado a  Desinclinação da Imagem, e depois seja feita a otimização da mesma, por final aplicado o reconhecimento optical de caracteres!

Imagem que será Tratada:



Imagem após a desinclinação:




Imagem Binarizada :


Imagem Final Com o Reconhecimento Optical de Caracteres:


O Algoritmo :

#!/usr/bin/python
# -*- coding: utf-8 -*-

from SimpleCV import *
import time


img = Image("ret.png")

blobs = img.findBlobs()
print "Objetos Encontrados --> %i\n" % (len(blobs))
if blobs:
    blobs = blobs[-1]
    print "Angulo do Objeto --> %i\n" % (blobs.angle())
    print "Aplicando rotação para desinclinação da imagem!"
    img = img.smartRotate()    
    bin = img.binarize()
    text = bin.readText()[:-5]
    if text:
        string = "Texto reconhecido da Imagem:-->%s" % (text)
        img.drawText(string,35,15,color=Color.AZURE,fontsize=35)
      
img.show()   
time.sleep(5)





Os algorimos OCR são também muitos usados para reconhecimento de texto em placas de carros!


domingo, 7 de julho de 2013

Rastreamento da direção do Objeto com Python e SimpleCV

Olá Pessoal, com esse algoritmo é possível saber em que direção o objeto está indo:

segue o código:




from SimpleCV import *
__autor__='Rodrigo gomes'


def check_movimento(x = 0,y = 0,t=1):
 direcao = ""
 direcaoX= ""
 direcaoY = "" 
 if x > t:
  direcaoX= "Direita"
 if x < -1*t:
  direcaoX= "Esquerda"
 if y < -1*t:
  direcaoY = "Cima"
 if y > t:
  direcaoY = "Baixo"

  direcao = direcaoX+ " " + direcaoY
 if direcao is not "":
  return direcao
 else:
  return "Sem Movimento"

def main():
   
    d = Display((640,480))
    cam = Camera()
    anterior = cam.getImage().flipHorizontal().scale(0.3)
    time.sleep(0.5)
    t = 0.5
    buffer = 20
    count = 0
    while d.isNotDone():
            atual = cam.getImage().flipHorizontal()
            atual = atual.scale(0.3)
            if( count < buffer ):
                    count = count + 1
            else:
                    fs = atual.findMotion(anterior, window=15, method="HS")
                    lengthOfFs = len(fs)
                    if fs:
                            fs.draw(color=Color.GREEN)
                            dx = 0
                            dy = 0
                            for f in fs:
                                    dx = dx + f.dx
                                    dy = dy + f.dy

                            dx = (dx / lengthOfFs)
                            dy = (dy / lengthOfFs)
                            motionStr = check_movimento(dx,dy,t)
                            atual.drawText(motionStr,10,10,fontsize=20)

            anterior = atual
            time.sleep(0.01)
            atual.save(d)

if __name__ == '__main__':
    main()




demo no vídeo: