Aquí hay una imagen, el nombre de la imagen es flower.jpg
Durante el procesamiento de la imagen, si necesitamos mostrar la imagen, podemos usar opencv para leerla y mostrarla, o podemos usar matplotlib para leerla y mostrarla. Sin embargo, la forma en que opencv lee imágenes en color no es RGB, Opencv las lee en forma de BGR de forma predeterminada (la razón histórica de esto parece estar relacionada con la cámara, puede consultar la información relevante).
leer fotos
A continuación se explica cómo opencv y matplotlib leen imágenes
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 el mismo módulo para leer y mostrar, el efecto es el mismo. La diferencia mencionada aquí es principalmente el método de almacenamiento de imgA e imgB.
abiertocv
matplotlib
Mostrar usando diferentes módulos
lecturas opencv, visualizaciones matplot.
Comparado
imgA almacenado por opencv:
imgB almacenado por matplotlib:
Se puede ver que imgA e imgB son matrices tridimensionales. Los tres elementos más internos son lo que a menudo llamamos "RGB", mientras que opencv y matplotlib hacen lo contrario y usan BGR.
Mostrar imágenes usando matplitlib
Si queremos convertir imágenes opencv a formato RGB y mostrarlas, podemos consultar los siguientes métodos.
División y refusión de canales
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()
El resultado es el que se muestra a continuación:
Usando la función 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()
El resultado es el que se muestra a continuación:
Acceso al segmento inverso
También se puede acceder a matrices numpy mediante cortes, e img también es una 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()