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

Problema persiste mesmo após a solução apresentada!!!

Olá Marcus, no ultimo tópico disse que meu código não estava conseguindo converter a string em float para visualização da imagem.

Você me apresentou duas sugestões. Como segue abaixo:

"Olá, Thiago! Tudo bom? Espero que sim!

A função não conseguiu identificar que o path aponta para um arquivo, e está considerando apenas como uma string comum. Por esse motivo o erro aponta que um conteúdo de imagem esperado (Image data) de tipo object (string) não pode ser convertido ao tipo padrão, que é um array de floats.

Para passar o caminho corretamente, a correção que precisa ser feita é no padrão de escrita path completo do arquivo da imagem que você passou na função cv2.imread().

import cv2
import matplotlib.pyplot as plt
import seaborn as sns

imagem = cv2.imread("C:\\Users\\Felipe\\Desktop\\Programação\\Visão Computacional\\px-girl.jpg")
plt.imshow(imagem)

Ou então você também pode utilizar uma raw-string para ignorar possíveis confusões com metacaracteres:

import cv2
import matplotlib.pyplot as plt
import seaborn as sns

imagem = cv2.imread(r"C:\Users\Felipe\Desktop\Programação\Visão Computacional\px-girl.jpg")
plt.imshow(imagem)

MAs tentei as duas opções e continua com o mesmo erro.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_14100\2254562551.py in <module>
      1 imagem = cv2.imread(r"C:\Users\Felipe\Desktop\Programação\Visão Computacional\px-girl.jpg")
----> 2 plt.imshow(imagem)

~\anaconda3\lib\site-packages\matplotlib\_api\deprecation.py in wrapper(*args, **kwargs)
    457                 "parameter will become keyword-only %(removal)s.",
    458                 name=name, obj_type=f"parameter of {func.__name__}()")
--> 459         return func(*args, **kwargs)
    460 
    461     # Don't modify *func*'s signature, as boilerplate.py needs it.

~\anaconda3\lib\site-packages\matplotlib\pyplot.py in imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, interpolation_stage, filternorm, filterrad, resample, url, data, **kwargs)
   2650         interpolation_stage=None, filternorm=True, filterrad=4.0,
   2651         resample=None, url=None, data=None, **kwargs):
-> 2652     __ret = gca().imshow(
   2653         X, cmap=cmap, norm=norm, aspect=aspect,
   2654         interpolation=interpolation, alpha=alpha, vmin=vmin,

~\anaconda3\lib\site-packages\matplotlib\_api\deprecation.py in wrapper(*args, **kwargs)
    457                 "parameter will become keyword-only %(removal)s.",
    458                 name=name, obj_type=f"parameter of {func.__name__}()")
--> 459         return func(*args, **kwargs)
    460 
    461     # Don't modify *func*'s signature, as boilerplate.py needs it.

~\anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, data, *args, **kwargs)
   1410     def inner(ax, *args, data=None, **kwargs):
   1411         if data is None:
-> 1412             return func(ax, *map(sanitize_sequence, args), **kwargs)
   1413 
   1414         bound = new_sig.bind(ax, *args, **kwargs)

~\anaconda3\lib\site-packages\matplotlib\axes\_axes.py in imshow(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, interpolation_stage, filternorm, filterrad, resample, url, **kwargs)
   5479                               **kwargs)
   5480 
-> 5481         im.set_data(X)
   5482         im.set_alpha(alpha)
   5483         if im.get_clip_path() is None:

~\anaconda3\lib\site-packages\matplotlib\image.py in set_data(self, A)
    704         if (self._A.dtype != np.uint8 and
    705                 not np.can_cast(self._A.dtype, float, "same_kind")):
--> 706             raise TypeError("Image data of dtype {} cannot be converted to "
    707                             "float".format(self._A.dtype))
    708 

TypeError: Image data of dtype object cannot be converted to float``
1 resposta
solução!

Thiago, tudo bem?

Poderia testar se o arquivo de fato existe? Tem uma biblioteca que faz isso e tiramos a dúvida se de fato o arquivo está na pasta que você está indicando.

from pathlib import Path

# create a Path object with the path to the file
path = Path('C:/Users/Felipe/Desktop/Programação/Visão Computacional/px-girl.jpg')

print(path.is_file())

Se o retorno for True, o arquivo existe.

Lembrando que você não precisa sempre utilizar o caminho absoluto. Se o notebook que você estiver utilizando, por exemplo, estiver na pasta "Visão Computacional", basta você acessar diretamente o nome do aquivo.

imagem = cv2.imread("px-girl.jpg")
plt.imshow(imagem)

Depois comenta como foram esses testes, por favor.

Abraço.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software