Introducción
Bienvenido a este tutorial sobre OpenCV-Python. En este tutorial se abordarán algunas operaciones básicas en imágenes utilizando la biblioteca OpenCV en Python.
Accediendo y modificando valores de píxeles
Antes de comenzar esta práctica, los participantes deben abrir el Shell de Python en la terminal en /home/labex/project
cd /home/labex/project
python3
Primero, comenzaremos cargando una imagen y mostrándola utilizando OpenCV:
import cv2
## Cargar una imagen
image = cv2.imread('image.jpg')
## Mostrar la imagen
cv2.imwrite('Original Image.jpg', image)
Para acceder a un valor de píxel, simplemente debemos proporcionar sus coordenadas (x, y) de la siguiente manera:
pixel_value = image[y, x]
El valor del píxel es una matriz que contiene los canales de color (B, G, R). Para modificar un valor de píxel, simplemente asigna un nuevo valor a las coordenadas correspondientes.
A continuación, se muestra un ejemplo para establecer el píxel [0:9, 0:9] en rojo:
for x in range(10):
for y in range(10):
image[x, y] = [0, 0, 255] ## Establece el píxel en rojo
cv2.imwrite('Modified Image.jpg', image)
La imagen original se ve así:
![]()
Imagen después de modificar los valores de píxeles en el rango de [0:9,0:9]:
![]()
Los usuarios pueden comprobar la corrección del resultado ejecutando el código siguiente.
Accediendo a las propiedades de la imagen
Las propiedades de la imagen incluyen el número de filas, columnas y canales, así como el tipo de datos de la imagen y el número total de píxeles.
Para acceder a la forma de la imagen (filas, columnas y canales), utiliza el atributo shape:
height, width, channels = image.shape
print(height, width, channels)
## salida
## 360 640 3
Para acceder al número total de píxeles, utiliza el atributo size:
total_pixels = image.size
print(total_pixels)
## salida
## 691200
Para acceder al tipo de datos de la imagen, utiliza el atributo dtype:
image_dtype = image.dtype
print(image_dtype)
## salida
## uint8
Estableciendo una región de interés (ROI)
Una región de interés (ROI) es una sub-imagen que podemos extraer de la imagen original. Para establecer una ROI, solo necesitamos proporcionar las coordenadas de inicio y fin.
roi = image[start_y:end_y, start_x:end_x]
Por ejemplo, para extraer una ROI de 100x100 píxeles desde la esquina superior izquierda, podemos hacer lo siguiente:
roi = image[0:100, 0:100]
cv2.imwrite('ROI.jpg', roi)
La imagen generada ROI.jpg se ve así:

División y fusión de imágenes
Para dividir una imagen en sus canales de color (B, G, R), utiliza la función cv2.split():
b, g, r = cv2.split(image)
Ahora podemos mostrar los canales individuales utilizando cv2.imwrite().
Para combinar los canales de nuevo en una sola imagen, utiliza la función cv2.merge():
merged_image = cv2.merge((b, g, r))
Por ejemplo, para intercambiar los canales rojo y azul, podemos hacer lo siguiente:
swapped_image = cv2.merge((r, g, b))
cv2.imwrite('Swapped Channels Image.jpg', swapped_image)
La imagen generada Swapped Channels Image.jpg se ve así:

Resumen
¡Y eso es todo! Has aprendido algunas operaciones básicas en imágenes utilizando OpenCV-Python. Estos son conceptos importantes para entender cuando se trabaja con imágenes en aplicaciones de visión por computadora y procesamiento de imágenes. Al dominar estas operaciones básicas, estarás en buen camino para desarrollar algoritmos de procesamiento de imágenes más avanzados.



