Saltar al contenido

Extracción de una región de una imagen mediante corte en Python, OpenCV

Esta es la solución más válida que encomtrarás brindar, pero primero obsérvala detenidamente y valora si se adapta a tu proyecto.

Solución:

Hay una ligera diferencia en el orden de los píxeles en OpenCV y Matplotlib.

OpenCV sigue el orden BGR, mientras que matplotlib probablemente sigue el orden RGB.

Entonces, cuando muestra una imagen cargada en OpenCV usando funciones pylab, es posible que deba convertirla en modo RGB. (No estoy seguro de si hay algún método fácil). El siguiente método lo demuestra:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('messi4.jpg')
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.subplot(121);plt.imshow(img) # expects distorted color
plt.subplot(122);plt.imshow(img2) # expect true color
plt.show()

cv2.imshow('bgr image',img) # expects true color
cv2.imshow('rgb image',img2) # expects distorted color
cv2.waitKey(0)
cv2.destroyAllWindows()

NB: consulte el comentario de @Amro a continuación para obtener un mejor método de conversión entre BGR y RGB. img2 = img[:,:,::-1] . Muy simple.

Ejecute este código y vea la diferencia en el resultado usted mismo. A continuación se muestra lo que obtuve:

Usando Matplotlib:

ingrese la descripción de la imagen aquí

Usando OpenCV:

ingrese la descripción de la imagen aquí

2 opciones más no mencionadas aún:

img[..., ::-1] # same as the mentioned img[:, :, ::-1] but slightly shorter

y el versatil

cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

Calificaciones y comentarios

Al final de la artículo puedes encontrar las críticas de otros usuarios, tú de igual manera eres capaz insertar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *