Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Por que é preciso converter a ROI para RGB no final do exercício?

No final do exercício, o código só funciona quando fazemos a conversão da ROI novamente para RGB. A parcela que representa o corpo da garotinha não deveria continuar em grayscale?

Código completo:

 imagem = cv2.imread(image)
        imagem_rgb = cv2.cvtColor(imagem, cv2.COLOR_BGR2RGB)
        imagem_cut_gray = cv2.cvtColor(imagem_rgb[235:380,530:670], cv2.COLOR_RGB2GRAY)
        imagem_rgb[235:380,530:670] = cv2.cvtColor(imagem_cut_gray, cv2.COLOR_GRAY2RGB)

Final do código:

imagem_rgb[235:380,530:670] = cv2.cvtColor(imagem_cut_gray, cv2.COLOR_GRAY2RGB)
1 resposta
solução

Quando convertermos uma imagem ou uma região de interesse (ROI) em escala de cinza, diminuímos a quantidade de informações, de 3 canais (R, G e B) para 1 canal único. A representação de canal único é aproximadamente a média dos outros canais (para ser mais exato a equação é Y = 0.299*R + 0.587*G + 0.114*B, aqui tem mais informações na documentação). Como o objetivo é incorporar o ROI na imagem original, que está em 3 canais, precisamos também converter para os 3 canais. Não é possível incorporar uma região de canais diferentes nem mesmo de espaço de cores diferentes. Nesse caso, o ROI de canal único, é necessário a conversão para 3 canais em RGB para encaixar na imagem original.