OpenCV: leitura e gravação de imagens em Python
Gabarito: letra A. O código lê o arquivo "imagem.png", processa a imagem e a grava em um novo arquivo chamado "imagem_nova.jpg" no formato JPEG. O arquivo original "imagem.png" permanece intacto, pois a função de gravação cria um novo arquivo sem excluir o existente.
O OpenCV é uma biblioteca de visão computacional amplamente utilizada em Python. Suas funções principais para manipulação de arquivos de imagem são imread() (para ler) e imwrite() (para gravar). A função imwrite() recebe dois argumentos: o caminho/nome do arquivo de destino e a matriz de pixels da imagem. O formato de gravação é determinado pela extensão do arquivo de destino — se você especificar ".jpg", a imagem será codificada como JPEG; se especificar ".png", será codificada como PNG.
O ponto crucial é que imwrite() cria um novo arquivo. Ela não renomeia nem exclui o arquivo original. Se o arquivo de destino já existir, ele será sobrescrito, mas o arquivo de origem ("imagem.png") não é afetado. Isso significa que, após a execução, teremos dois arquivos no diretório: o original "imagem.png" e o novo "imagem_nova.jpg".
Vamos analisar o fluxo do código:
Leitura: cv2.imread('imagem.png') carrega a imagem do arquivo PNG para a memória como uma matriz NumPy.
Processamento: (se houver) qualquer operação de processamento é aplicada à matriz.
Gravação: cv2.imwrite('imagem_nova.jpg', imagem) cria um novo arquivo "imagem_nova.jpg" e salva a imagem nele, codificada no formato JPEG.
A pegadinha desta questão está em confundir a criação de um novo arquivo com a renomeação ou exclusão do arquivo original. A banca explora exatamente essa confusão: o candidato pode pensar que, ao gravar com um novo nome, o arquivo original é renomeado ou excluído. Mas não é isso que acontece — imwrite() simplesmente cria um novo arquivo, deixando o original intacto.
Guarde esta distinção: criar um novo arquivo ≠ renomear ≠ excluir. É exatamente nessa fronteira que as alternativas se dividem.
Alternativa A — ✅ Correta ⟵ GABARITO
Esta alternativa descreve com precisão o comportamento do código. A função imwrite('imagem_nova.jpg', imagem) cria um novo arquivo com o nome "imagem_nova.jpg" e o formato JPEG (determinado pela extensão). O arquivo original "imagem.png" não é excluído nem renomeado — ele permanece no diretório. Portanto, o resultado é exatamente: um novo arquivo "imagem_nova.jpg" criado e convertido para o formato JPEG.
Alternativa B — ❌ Incorreta
O erro está na afirmação de que o arquivo "imagem.png" será excluído. A função imwrite() não tem nenhum comportamento de exclusão. Ela apenas cria ou sobrescreve o arquivo de destino. O arquivo original permanece intacto após a execução. A banca tenta fazer o candidato acreditar que a gravação de um novo arquivo implica a remoção do original, o que não é verdade.
Alternativa C — ❌ Incorreta
Esta alternativa contém dois erros. Primeiro, afirma que o novo arquivo será "imagem_nova.png", mas o código especifica "imagem_nova.jpg". Segundo, diz que a imagem será "convertida para o formato JPEG, sem que seja alterada a extensão do arquivo" — o que é contraditório: se o arquivo é "imagem_nova.png", a extensão é PNG, não JPEG. A conversão para JPEG exige a extensão ".jpg" ou ".jpeg". O código cria um arquivo com extensão ".jpg", portanto o formato é JPEG.
Alternativa D — ❌ Incorreta
Esta alternativa afirma que o arquivo "imagem.png" será renomeado para "imagem_nova.jpg" e que um novo arquivo será criado. Isso é contraditório: se o arquivo é renomeado, não há um novo arquivo criado — é o mesmo arquivo com nome diferente. Na prática, imwrite() não renomeia nada; ela cria um novo arquivo independente. O arquivo original "imagem.png" permanece com seu nome original.
Alternativa E — ❌ Incorreta
O erro está em afirmar que o arquivo "imagem.png" será renomeado para "imagem_nova.jpg". A função imwrite() não renomeia arquivos. Ela cria um novo arquivo com o nome especificado, deixando o original intacto. O resultado é a coexistência de dois arquivos: "imagem.png" e "imagem_nova.jpg".
Gabarito: letra A