Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Nao entendi muito bem esse trecho de código

Nao consegui compreender como vai funcionar o loop com o [i] para fazer o desenho da caixa. Alem disso, como é definida a posição inicial de x e y em cada palavra? (se nao me engano sempre é no canto superior esquerdo). E por ultimo, por que somar X com W e Y com H? :)

def caixa_texto(resultado, img, cor = (255, 100, 0)):
  x = resultado['left'][i]
  y = resultado['top'][i]
  w = resultado['width'][i]
  h = resultado['height'][i]

  cv2.rectangle(img, (x, y), (x+w, y+h), cor, 2)

  return x, y, img
1 resposta
solução!

Oii, Julia! Tudo bem? :)

  • O loop com o [i]: o [i] é um índice que está sendo usado para percorrer os resultados do reconhecimento de texto. Por exemplo, se o OCR identificou 10 palavras na imagem, o loop irá de 0 a 9 (total de 10 iterações), e para cada iteração, ele desenha uma caixa delimitadora em torno da palavra correspondente.

  • A posição inicial de x e y: sua observação está certinha, a posição inicial (x, y) vem do canto superior esquerdo da caixa delimitadora. Esses valores representam as coordenadas do canto superior esquerdo da caixa delimitadora em relação à imagem.

  • A soma de X com W e Y com H: W e H são a largura e a altura da caixa delimitadora, respectivamente. Quando somamos X com W, estamos encontrando a coordenada x do canto direito da caixa. Da mesma forma, ao somar Y com H, encontramos a coordenada y do canto inferior da caixa. Portanto, (X, Y) é o canto superior esquerdo e (X+W, Y+H) é o canto inferior direito da caixa delimitadora. A função cv2.rectangle desenha um retângulo entre esses dois pontos.

Aqui está um exemplo prático para visualizar melhor:

Suponha que o OCR identificou uma palavra na imagem na posição (2, 2), com largura 4 e altura 2. Então, X = 2, Y = 2, W = 4 e H = 2. A caixa delimitadora será desenhada entre os pontos (2, 2) e (2+4, 2+2), ou seja, entre (2, 2) e (6, 4).

Se outra dúvida surgir, estamos disponíveis aqui no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.