1
resposta

sobre usar plt

Olá,

Quando você usa no colab:

img = cv2.imread('/content/text-recognize/Imagens/Aula1-ocr.png')
cv2_imshow(img)

ele mostra a imagem na forma original, mas se estou usando minha maquina local uso :

img = cv2.imread('Imagens/Aula1-ocr.png')
plt.imshow(img)
plt.axis('off')
plt.show()

ele já me mostra a imagem como tivese aplicado cv2.COLOR_BGR2RGB. Mas se aplico:

rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(rgb)
plt.axis('off')
plt.show()

me mostra a imegen real. podeme explicar um pouco mais isto? Ou no meu caso não preciso dazer
rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)? para uma maquina local?

1 resposta

Olá Miguel, tudo bem?

Esse comportamento está ocorrendo porque o OpenCV, por padrão, lê as imagens no formato BGR (Blue, Green, Red), enquanto a maioria das outras bibliotecas, como Matplotlib, utilizam o formato RGB (Red, Green, Blue). Então, quando você usa cv2.imshow, a imagem é exibida corretamente, pois o OpenCV entende que está no formato BGR. Mas, ao usar plt.imshow sem converter a imagem, ela é interpretada como RGB, o que resulta em uma exibição com as cores trocadas.

Por isso, quando você usa plt.imshow(img) diretamente, a imagem parece ter as cores alteradas, como se já tivesse sido aplicada a conversão cv2.COLOR_BGR2RGB. Para exibir a imagem corretamente com Matplotlib, você precisa converter a imagem de BGR para RGB usando cv2.cvtColor(img, cv2.COLOR_BGR2RGB) antes de chamar plt.imshow.

Portanto, sim, você precisa fazer a conversão rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) quando estiver exibindo imagens com Matplotlib na sua máquina local. Isso garantirá que as cores sejam exibidas corretamente.

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!