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.
💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí
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.
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.
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
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í:
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í:
¡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.