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


( 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..!!
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