Lo primero a tener en cuenta es que además de la librería OpenCV (cv2) vamos a tener que importar la librería Numpy, ya que para tratar los 255 niveles de cada uno de los canales RGB y el tamaño de ancho y alto de la imagen se necesitan trabajar con matrices de tres dimensiones. Podemos obtener la información necesaria sobre la librería Numpy en esta misma página. No obstante, es sencillo comprender si observamos la imagen de la derecha, que cualquier imagen va a tener de alto tantas filas como pixeles presente el alto, al igual que va a tener tantas columnas como pixeles presente de ancho y la profundidad o fondo nos indicará cuantos canales de color presenta dicha imagen. Reduciendo esta teoría al gráfico tendríamos que una imagen representada por la matriz imagen = (3, 3, 3) tendría 3 filas (pixel) de alto, 3 columnas (pixel) de ancho y 3 colores (BGR) de fondo.
De la misma forma una imagen a color de 640 de ancho x 480 de alto pixeles se podrá representar en una matriz imagen =(480, 640, 3). En la imagen de abajo podemos ver una imagen a color descompuestas en los tres canales RGB.
En esta segunda parte aparece un método denominado cv2.cvtColor() se utiliza para convertir una imagen de un espacio de color a otro. Hay más de 150 métodos de conversión de espacio de color disponibles en OpenCV.
Sintaxis: cv2.cvtColor(origen, código[, dst[, dstCn]])
Parámetros:
src: Es la imagen cuyo espacio de color se desea modificar.
código: Es el código de conversión del espacio de color.
En este primer ejemplo usamos cv2_COLOR_BGR2RGB para cambiar el orden de los canales.
En el vídeo también se prueba con cv2_COLOR_BGR2GRAY para transformar a escala de grises.
dst: es la imagen de salida del mismo tamaño y profundidad que la imagen src. Es un parámetro opcional.
dstCn: Es el número de canales en la imagen de destino. Si el parámetro es 0, el número de canales se deriva automáticamente de src y código. Es un parámetro opcional.
Valor devuelto: Devuelve una imagen.
En este código analizamos nuevos métodos de cv2. El objetivo es crear una imagen de dimensiones 300 px * 512 px en color y hacer que aparezcan en la ventana con la imagen unos tiradores (Trackbar) para modificar los valores de los canales RGB entre 0 y 255, variando por tanto el color de la imagen mostrada.
cv2.namedWindow('nombreventana') --> Nos permite crear una ventana y requiere un argumento con un nombre para la barra de título.
cv2.createTracker(arg1, arg2, arg3, arg4, arg5) --> Nos permite crear las barras deslizantes para jugar con los valores. Los argumentos necesarios son:
arg1 : Nombre de la barra de seguimiento
arg2: Nombre de la ventana
arg3: Valor predeterminado del control deslizante
arg4: Valor máximo
arg5: función de devolución de llamada (En este caso usamos una función vacía ya que la funcionalidad la obtenemos del propio programa.
cv2.gettrackbarpos(arg1, arg2) --> Nos permite tomar datos de las posiciones de las barras deslizantes antes de asignárselos a la imagen.