¿Cómo generar imágenes usando Numpy?

| Última modificación: 12 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes cómo puedes generar imágenes usando Numpy, la librería de Python? En este artículo te enseñaremos cómo puedes hacer distintos tipos de imágenes con diferentes patrones a través del uso de Numpy, una de las bibliotecas más empleadas y completas en Python.

Generar imágenes usando Numpy

Líneas verticales

Por medio de Python, vamos a generar imágenes usando Numpy. La primera imagen que crearemos es una imagen con líneas verticales.

Lo primero que haremos, como siempre, será importar las librerías y complementos necesarios. A pesar de que trabajaremos con Numpy, esta no será la única librería que necesitaremos para este trabajo.

#generar imágenes usando Numpy: imagen con líneas verticales
from ___future___ import division
import numpy as np
import matplotlib.pyplot as plt
from PIL importImage
from numpy.fft import fft2, fftshift, ifft2

hW, hH = 600, 300
#Definimos el periodo, que afectará en la horizontal
#En vertical, la imagen es constante
hFrec = 10.5

#generar imágenes usando Numpy: imagen con líneas verticales
#Crea una malla en el cuadrado de dimensiones [0,1) x [0,1)
x = np.linspace (0, 2 * hW / (2 * hW + 1), 2 * hW + 1) #columnas (Anchura)
y = np.linspace (0, 2 * hH / (2 * hH + 1), 2 * hH + 1) #filas (Altura)

#Con meshgrid determinamos las líneas de cuadrícula verticales y horizontales
[X, Y] = np.meshgrid (x, y)
A = np.sin (hFrec * 2 * np.pi * X)

plt.imshow (A, extent = [0, 1, 0, 1], cmap = 'gray');
generar imágenes usando Numpy

Como puedes ver, usamos matplotlib y numpy como librerías. También empleamos el linspace para generar una secuencia de vectores de espaciado con un cierto número. En este caso serían el 2 * hW + 1 y el 2 * hH + 1.

Líneas horizontales y verticales

También podemos crear una imagen con líneas horizontales y verticales:

#generar imágenes usando Numpy: imagen con líneas horizontales y verticales
hFrec = 10.5 #Frecuencia horizontal
vFrec = 20.5 #Frecuencia vertical

A1 = np.sin (hFrec * 2 * np.pi * X) + np.sin (vFrec * 2 * np.pi * Y)

plt.figure  ()
plt.imshow (A1, cmap = 'gray', extent = [0, 1, 0, 1])

<matplotlib . image . AxesImage at 0x1c577552a90>

Líneas oblicuas

Por último, crearemos una imagen con líneas oblicuas:

#generar imágenes usando Numpy: imagen con líneas oblicuas
hFrec = 10.5 #Frecuencia horizontal
vFrec = 0.5 #Frecuencia vertical

A2 = np.sin (hFrec * 2 * np.pi * X + vFrec * 2 * np.pi * Y)

plt.figure  ()
plt.imshow (A2, cmap = 'gray', extent = [0, 1, 0, 1])

<matplotlib . image . AxesImage at 0x1c5775fd208>

Función linspace

La función linspace de Numpy tiene la capacidad de generar un array de Numpy que está formado por n números que tienen la misma distancia entre sí.

La sintaxis de la función es la siguiente:

#generar imágenes usando Numpy
numpy.linspace (valor inicial, valor final, número de valores)

Algunos de los parámetros del linspace son:

  • Start: array_like. Es el valor inicial de la secuencia.
  • Stop: array_like. Corresponde al valor final de la secuencia, a menos que el endpoint o punto final se programe en false.
  • Num: int, opcional. El num es un entero y define el número de valores o de ejemplos a generar. Por defecto se establece en 50 y debe ser un número positivo.
  • Endpoint: bool, opcional. El endpoint o punto final por defecto se encuentra en true, en este caso el punto de stop es la última muestra. En caso de ser false, esta última muestra no está incluida.
  • Retstep: bool, opcional. Si este es true, devuelve o retorna. El step hace referencia al espacio entre los valores en el intervalo.
  • Dtype: dtype, opcional. Este parámetro corresponde al tipo que tendrá el array o la matriz de salida. Si este no se especifica, el algoritmo de manera automática infiere el tipo de dato entre el inicio y la finalización del mismo. En todo caso, el dtype inferido nunca será un número entero. En vez de eso, si se tiene una matriz de números enteros, el dtype se pone por defecto en float.
  • Axis: int, opcional. Es el eje en el resultado para almacenar las muestras. Es importante solo si start o stop son array_like.

¿Quieres seguir aprendiendo?

Ahora que entendemos cómo generar imágenes usando Numpy, puedes seguir aprendiendo sobre Big Data. Para acceder y triunfar en este sector tan demandado, no te pierdas el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva e íntegra en la que adquirirás, en muy pocos meses, todos los conocimientos teóricos y prácticos que te ayudarán a conseguir el trabajo de tus sueños. Contarás con la guía constante de profesionales que te ayudarán tanto en el proceso de formación como en la búsqueda de empleo. ¡Entra ya para solicitar información y anímate a cambiar tu futuro!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado