Te damos el arreglo a este enigma, o por lo menos eso creemos. Si tienes interrogantes puedes dejarlo en el apartado de preguntas, que sin dudarlo te responderemos
Solución:
Eso es tan simple como cargar una imagen usando cv2.imread
y luego usar cv2.split
:
>>> import cv2
>>> import numpy as np
>>> img = cv2.imread("foo.jpg")
>>> b,g,r = cv2.split(img)
La documentación de OpenCV está disponible en docs.opencv.org
Como se menciona en el tutorial de documentación, cv2.split() es una operación costosa en términos de rendimiento (tiempo) si no desea operar en todos los canales sino solo en uno o dospor lo que se prefiere la indexación numpy:
import cv2
import numpy as np
img = cv2.imread("foo.jpg")
b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]
Recuerda que opencv lee las imágenes como BGR en lugar de RGB
Editar: @Mitch McMabers, gracias por señalar esto. Utilice este método para obtener la máxima eficiencia si desea trabajar en uno o dos canales por separado. Si desea operar en los tres canales, acceda a los canales usando cv2.split() como se menciona en la respuesta de @jabaldeno.
Puedes apoyar nuestra labor añadiendo un comentario o valorándolo te damos las gracias.