1
resposta

solução - ValueError: the input array must have size 3 along `channel_axis`, got (630, 1200, 4)

O erro do código

img = io.imread(r'arquivos/logo_alura/1200x630wa.png')
img = color.rgb2gray(img)

img = transform.resize(img, (img.shape[0]//10, img.shape[1]//10) )

saida = convolve(img, kernel_v, 'valid')

plt.imshow(img, cmap='gray')
plt.title('Imagem')

plt.figure(figsize=(8, 5))
plt.imshow(np.abs(saida), cmap='gray')
plt.colorbar()
plt.title('Mapa de ativação')

Erro

ValueError: the input array must have size 3 along channel_axis, got (630, 1200, 4)

Se dá pela linha img = color.rgb2gray(img), pois a logo da alura:

https://is5-ssl.mzstatic.com/image/thumb/Purple113/v4/a2/56/30/a2563080-dddc-6a02-9034-a461c6c02fae/AppIcon-0-1x_U007emarketing-0-0-85-220-0-10.png/1200x630wa.png

Está no formato CMYK, com 4 canais. A solução se dá em 'cortar' um canal fora, alterando a linha para:

img = io.imread(r'arquivos/logo_alura/1200x630wa.png')[:,:,:3]

ficando:

img = io.imread(r'arquivos/logo_alura/1200x630wa.png')[:,:,:3]
img = color.rgb2gray(img)

img = transform.resize(img, (img.shape[0]//10, img.shape[1]//10) )

saida = convolve(img, kernel_v, 'valid')

plt.imshow(img, cmap='gray')
plt.title('Imagem')

plt.figure(figsize=(8, 5))
plt.imshow(np.abs(saida), cmap='gray')
plt.colorbar()
plt.title('Mapa de ativação')
1 resposta

Boa, Emerson!

A solução de manter apenas os canais RGB é adequada e funciona muito bem. Obrigada por compartilhar sua solução com o fórum!

Forte abraço.