opencv y matplot muestran imágenes

Aquí hay una imagen, el nombre de la imagen es flower.jpg Insertar descripción de la imagen aquí
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

Insertar descripción de la imagen aquí

matplotlib

Insertar descripción de la imagen aquí

Mostrar usando diferentes módulos

lecturas opencv, visualizaciones matplot.
Insertar descripción de la imagen aquí

Comparado

imgA almacenado por opencv:
Insertar descripción de la imagen aquí
imgB almacenado por matplotlib:
Insertar descripción de la imagen aquí
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:

Insertar descripción de la imagen aquí

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:
Insertar descripción de la imagen aquí

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()

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_67313306/article/details/127524254
Recomendado
Clasificación