Início > Programação, Visao Computacional > Principios para identificação de caracteres em Python

Principios para identificação de caracteres em Python

Olá Galera,

No meu último post descobri como é agradável brincar com manipulação de imagens em Python (PIL),  então começei a imaginar como aplicar isso em algo para melhor ser aproveitado, no mesmo momento me veio a cabeça  “pq não identificar caracteres ??”

Mas nada na vida é tão simples como pensamos ser, a principio me perguntei “como pegar letras de uma palavra separadamente?” muitas perguntas  hahaha então descobri que antes de iniciar qualquer método teria antes que separar as letras de uma palavra para só assim avançar …

A idéia Seria uma palavra sem firulas em uma font black e em um fundo branco, assim poderia abrir esta imagem procurar pela ocorrencia da cor mais escura e quando a encontrasse eu estaria em uma letra da palavra assim eu poderia pegar a localização para depois iniciar a parte mais avançada do script segue o source que faz a brincadeira …

Imagem Original para os meus testes:

Então Aplicando na prática temos:

Compartilhando o source:

#Eder de Souza
#Encontrar Letras

from PIL import Image
import ImageFont, ImageDraw, ImageOps

im2 = Image.open(“eder.jpg”)

letraini = False
achouletra=False
inicio = 0
fim = 0
letras = []
for y in range(im2.size[0]): 
  for x in range(im2.size[1]): 
    pixel = im2.getpixel((y,x))
    r,g,b = pixel
    color = (r + g + b) / 3
    if color < 90:
      letraini = True
  if achouletra == False and letraini == True:
    achouletra = True
    inicio = y
  if achouletra == True and letraini == False:
    achouletra = False
    fim = y
    letras.append((inicio,fim))

  letraini=False

draw = ImageDraw.Draw(im2)

for y in (letras):
    inicio,fim = y
    draw.rectangle((inicio, 0, fim, (im2.size[1]-1)), outline=(16, 152, 22))
im2.save(“output.jpg”)
print “verifique arquivo de saida”

Logo Postareis mais testes quando tiver tempo

Att,

Eng Eder de Souza

About these ads
  1. agosto 9, 2011 às 7:03 pm

    ( r+g+b ) / 3… identifica que o pixel é o mais escuro? interessante o algoritmo… nunca tinha visto algo… phyton parece ser uma otima linguagem para trabalhar com imagens… estou certo?? com java vc identifica um caracter em uma string facilmente, pois a string representa um objeto e cada char faz parte desse objeto… mais ou menos isso… stringname.getcharat[i] …

  2. agosto 9, 2011 às 7:06 pm

    Allan Oliveira :
    ( r+g+b ) / 3… identifica que o pixel é o mais escuro? interessante o algoritmo… nunca tinha visto algo… phyton parece ser uma otima linguagem para trabalhar com imagens… estou certo?? com java vc identifica um caracter em uma string facilmente, pois a string representa um objeto e cada char faz parte desse objeto… mais ou menos isso… stringname.getcharat[i] …

    só quis fazer um comparativo com o q vc citou ser a sua primeira dificuldade em phyton… mas nao tenho ideia como identificar esse pixel “mais escuro” em java… vou procurar saber… interessante isso..!!

    • ederwander
      agosto 9, 2011 às 8:00 pm

      Oi Allan, Python vem se destacando dentro da comunidade cientifica pela sua praticidade, possue suporte a bibliotecas matemáticas poderosas o que facilita e muito o trabalho em algoritimos que necessitam de calculos (imagens, audios, etc), Uma imagem é composta por vários pontos (pixels) cada pixel tem uma cor especifica em RGB, estas cores sao formadas por três combinações Red Green Blue (RGB) cada um pode variar de 0(preto) até 255(branco)

      Esse calculo (r+g+b)/3 nada mais é do que a média dos valores RGB’s.

      Esta linha (if color < 90:) fala qual é o meu Threshold, neste caso estou procurando cores cuja a média RGB é menor do que 90 nas quais são cores mais escuras (fortes) Ex uma tonalidade de Vermelho escuro R=186 G=18 B=22 (186+18+22)/3 = 75. Vamos a um exemplo de uma tonalidade mais clara como a do verde Claro R=165 G=255 B=125 (165+255+125)/3 = 181.

      Reparou quanto menor o valor mais escura uma cor é!

      Java tem bastante recursos para manipulação de imagens …

      Att,

      Eng Eder de Souza

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d blogueiros gostam disto: