1
resposta

'NoneType' object has no attribute 'reshape'

Erro ao executar esse código:

NOME_DESCRITOR = 'sift_descritor.csv'

for caminho in dados_treinamento:

    caminho_descritor = os.path.join(caminho, NOME_DESCRITOR)
    if os.path.exists(caminho_descritor):
        os.remove(caminho_descritor)

    for arquivo in arquivo_diretorio(caminho):
        descritor = Descritor.get_SIFT_descritores(os.path.join(caminho, arquivo))
        histograma_descritor = img_representacao.histograma_de_frequencia(descritor)
        Descritor.salvar_descritor(histograma_descritor, caminho, NOME_DESCRITOR)

print("extração de caracteriscas finalizada e descritores salvos!")

Erro:

AttributeError                            Traceback (most recent call last)
<ipython-input-61-58de1e22d8a8> in <module>()
     10         descritor = Descritor.get_SIFT_descritores(os.path.join(caminho, arquivo))
     11         histograma_descritor = img_representacao.histograma_de_frequencia(descritor)
---> 12         Descritor.salvar_descritor(histograma_descritor, caminho, NOME_DESCRITOR)
     13 
     14 print("extração de caracteriscas finalizada e descritores salvos!")

<ipython-input-39-f044d4db428d> in salvar_descritor(descritor, caminho, nome_arquivo)
     29   @staticmethod
     30   def salvar_descritor(descritor, caminho, nome_arquivo):
---> 31       descritor = descritor.reshape((1,descritor.size))
     32       arquivo = open(os.path.join(caminho, nome_arquivo), 'a')
     33       np.savetxt(arquivo, descritor, delimiter=',', fmt='%i')

AttributeError: 'NoneType' object has no attribute 'reshape'
1 resposta

Oii Iago, como você está?

Peço perdão pela demora em obter um retorno.

Segundo o log de erro, o atributo descritor da função salvar_descritor está com o valor None, por isso, não é possível fazer o reshape do array. Sem o seu código completo para teste, fica incerto de dizer o verdadeiro fato disso estar ocorrendo, mas aqui vão alguns palpites para que tente sanar seu problema:

1- Reinicie o ambiente de execução do Google Colab e execute célula a célula do código. Para reiniciar, vá no menu superior em Ambiente de execução e logo após em Reiniciar Ambiente de Execução:

Imagem que mostra a opção de reiniciar o Ambiente de Execução

Caso o erro persista, siga para a próxima abordagem.

2- Observe se o caminho dos arquivos estão corretos. Neste outro tópico que respondi a você, mostrei detalhadamente com imagens sobre como obter o caminho dos arquivos. Após as modificações, tente executar novamente.

3- Se ainda sim o erro persistir, tente a execução com o código da aula. O mesmo pode ser encontrado neste link.

Qualquer dúvida fico à disposição.

Grande abraço!