Aqui está uma imagem, o nome da imagem é flower.jpg
Durante o processamento da imagem, se precisarmos exibir a imagem, podemos usar opencv para lê-la e exibi-la, ou podemos usar matplotlib para lê-la e exibi-la. No entanto, a forma como o opencv lê imagens coloridas não é a forma RGB, o Opencv lê na forma de BGR por padrão (a razão histórica para isso parece estar relacionada à câmera, você pode verificar as informações relevantes).
Leia fotos
A seguir está como opencv e matplotlib leem imagens
import cv2 as cv
import matplotlib.pyplot as plt
#opencv
imgA = cv.imread("flower.jpg",1)
# matplotlib
imgB = plt.imread("flower.jpg")
Mostrar fotos
Usando o mesmo módulo para ler e exibir, o efeito é o mesmo. A diferença mencionada aqui é principalmente o método de armazenamento de imgA e imgB.
opencv
matplotlib
Exibir usando módulos diferentes
leituras opencv, exibições matplot.
Comparado
imgA armazenado por opencv:
imgB armazenado por matplotlib:
Pode-se ver que imgA e imgB são matrizes tridimensionais.Os três elementos mais internos são o que costumamos chamar de "RGB", enquanto opencv e matplotlib fazem o oposto, usando BGR.
Exibir imagens usando matplitlib
Se quisermos converter imagens opencv para o formato RGB e exibi-las, podemos consultar os seguintes métodos.
Divisão e ressurgimento de canais
import cv2 as cv
import matplotlib.pyplot as plt
img = cv.imread("flower.jpg", 1)
b, g, r = cv.split(img) #通道分离
img = cv.merge([r, g, b]) #改序合并
plt.imshow(img)
plt.show()
O resultado é mostrado abaixo:
Usando a função cvtColor
import cv2 as cv
import matplotlib.pyplot as plt
img = cv.imread("flower.jpg", 1)
img = cv.cvtColor(img, cv.COLOR_BGR2RGB) #颜色通道转换
plt.imshow(img)
plt.show()
O resultado é mostrado abaixo:
Acesso reverso à fatia
Matrizes numpy também podem ser acessadas usando fatias, e img também é uma matriz numpy.
import cv2 as cv
import matplotlib.pyplot as plt
img = cv.imread("flower.jpg", 1)
img = img[:,:,::-1] #色彩是第三个维度,::-1 表示矩阵的逆序全访问
plt.imshow(img)
plt.show()