1
resposta

[Dúvida] img_copia

Olá, meu codigo deu erro, como posso ajustar?

img_copia = rgb.copy()
for i in range(len(resultado['text'])):
  confianca = int(resultado['conf'][i])
  if confianca > min_conf:
    x, y, img = caixa_texto(resultado, img_copia)
cv2_imshow(img_copia)

error Traceback (most recent call last) in <cell line: 2>() 3 confianca = int(resultado['conf'][i]) 4 if confianca > min_conf: ----> 5 x, y, img = caixa_texto(resultado, img_copia) 6 cv2_imshow(img_copia)

in caixa_texto(resultado, img, cor) 5 h = resultado['height'][i] 6 ----> 7 cv2.rectangle(img, (x, y), (x, y), cor, 2) 8 9 return x, y, img

error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'rectangle'

Overload resolution failed:

  • img is not a numpy array, neither a scalar
  • Expected Ptrcv::UMat for argument 'img'
  • img is not a numpy array, neither a scalar
  • Expected Ptrcv::UMat for argument 'img'
1 resposta

Ooi, Lenon! Como vai?

Esse erro está relacionado ao fato de a função cv2.rectangle estar recebendo um argumento inválido, que não é uma matriz numpy ou um tipo esperado pela função.

No traceback, é possível identificar que a função caixa_texto está retornando um objeto img, mas o OpenCV está esperando que esse objeto seja uma imagem no formato de matriz numpy. Isso pode ocorrer se o retorno da função caixa_texto não estiver no formato correto.

Vou deixar abaixo algumas sugestões de ajustes:

→ Verifique se img é uma imagem válida do OpenCV. Se caixa_texto está retornando algo diferente de uma imagem (como uma lista ou outro tipo de objeto), isso causará o erro.

→ Uma possível correção seria garantir que img_copia seja uma imagem (matriz numpy) antes de passá-la para cv2.rectangle. Além disso, revise a função caixa_texto para garantir que está retornando os tipos de dados corretos.

Vou deixar abaixo um exemplo de como o código pode ser ajustado:

img_copia = rgb.copy()
for i in range(len(resultado['text'])):
    confianca = int(resultado['conf'][i])
    if confianca > min_conf:
        x, y, img_copia = caixa_texto(resultado, img_copia)
        if isinstance(img_copia, np.ndarray):  # Verifica se img_copia é uma matriz numpy
            cv2.imshow('Imagem', img_copia)
        else:
            print("Erro: img_copia não é uma imagem válida.")

→ Nesse código, foi adicionada uma verificação para garantir que img_copia é uma matriz numpy antes de chamar cv2.imshow. Se não for, será exibida uma mensagem de erro.

Sugestões adicionais:

  • Verifique se a função caixa_texto retorna img_copia no formato esperado.
  • Verifique se resultado['height'][i] e outros índices acessados na função caixa_texto são válidos e existem.

Espero ter ajudado!

Abraço ✨

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