Oii Anne, como você está? Espero que esteja tudo bem com você.
Desculpas pela demora em obter um retorno.
O Google Colab, por padrão, irá manter um histórico de todas as funções e variáveis que foram executadas, por isso que ao seguir o mesmo procedimento feito durante as aulas funcionou corretamente, mesmo após ter modificado o retorno da função. Porém, ao fechá-lo e abri-lo novamente, esse histórico se perde e como a função foi modificada, tudo que se tem é o estado atual dela, sem o histórico das variáveis que ela retornava anteriormente.
Para corrigir isso, temos que retornar as variáveis img_suavizada
, pontos_chave
e descritor
na função get_descritores
, como mostro abaixo:
def get_descritores(img_caminho):
LARGURA = 360
ALTURA = 360
# Ler a imagem
img_teste = cv2.imread(img_caminho, 0)
# Redimensionar a imagem
img_redimensionada = cv2.resize(img_teste, (LARGURA, ALTURA), interpolation=cv2.INTER_CUBIC)
# Remover ruídos
img_equalizada = cv2.equalizeHist(img_redimensionada)
img_suavizada = cv2.GaussianBlur(img_equalizada, (9, 9), 1)
# Detectar os pontos chaves
orb = cv2.ORB_create(nfeatures=512)
pontos_chave = orb.detect(img_suavizada, None)
pontos_chave, descritores = orb.compute(img_suavizada, pontos_chave)
return img_suavizada, pontos_chave, descritores
E a chamada ficará da seguinte forma:
img_suavizada, pontos_chave, descritor = get_descritores(img_caminho)
print(f'TIPO: {type(descritor)}')
print(f'FORMATO DESCRITOR: {descritor.shape}')
print(f'DESCRITOR: {descritor}')
img_pontos = cv2.drawKeypoints(img_suavizada, pontos_chave, outImage = np.array([]), flags=0)
cv2_imshow(img_pontos)
Vale ressaltar que sua abordagem para correção apesar de sanar o erro não precisava necessariamente do uso das tuplas. E parabéns pela persistência em solucionar o erro que estava enfrentando.
Qualquer dúvida fico à disposição.
Grande abraço e bons estudos!