La visión por computadora es un proceso mediante el cual podemos entender las imágenes y videos, cómo se almacenan y cómo podemos manipular y recuperar datos de ellos. Computer Vision es la base o se utiliza principalmente para la Inteligencia Artificial. Computer-Vision está desempeñando un papel importante en los automóviles autónomos, la robótica y las aplicaciones de corrección de fotos.
OpenCV es la enorme biblioteca de código abierto para visión por computadora, aprendizaje automático y procesamiento de imágenes y ahora juega un papel importante en la operación en tiempo real, lo cual es muy importante en los sistemas actuales. Al usarlo, uno puede procesar imágenes y videos para identificar objetos, rostros o incluso la escritura a mano de un ser humano. Cuando se integra con varias bibliotecas, como NumPy, Python es capaz de procesar la estructura de array de OpenCV para su análisis. Para identificar patrones de imagen y sus diversas características, utilizamos el espacio vectorial y realizamos operaciones matemáticas en estas características.
En este artículo, discutiremos algunas funciones de uso común en OpenCV junto con sus aplicaciones.
Nota: Las funciones que se usan en este artículo son comunes para diferentes idiomas compatibles con OpenCV.
Imágenes de lectura
Para leer las imágenes se utiliza el método cv2.imread() . Este método carga una imagen del archivo especificado. Si la imagen no se puede leer (debido a la falta del archivo, permisos incorrectos, formato no compatible o no válido), este método devuelve una array vacía.
Imagen utilizada
Ejemplo: Python OpenCV leyendo imágenes
Python3
# Python code to read image import cv2 # To read image from disk, we use # cv2.imread function, in below method, img = cv2.imread("geeks.png", cv2.IMREAD_COLOR) # Creating GUI window to display an image on screen # first Parameter is windows title (should be in string format) # Second Parameter is image array cv2.imshow("GeeksforGeeks", img) # To hold the window on screen, we use cv2.waitKey method # Once it detected the close input, it will release the control # To the next line # First Parameter is for holding screen for specified milliseconds # It should be positive integer. If 0 pass an parameter, then it will # hold the screen until user close it. cv2.waitKey(0) # It is for removing/deleting created GUI window from screen # and memory cv2.destroyAllWindows()
Producción:
Guardar imágenes
El método cv2.imwrite() se utiliza para guardar una imagen en cualquier dispositivo de almacenamiento. Esto guardará la imagen según el formato especificado en el directorio de trabajo actual.
Ejemplo: Python OpenCV guardando imágenes
Python3
# Python program to explain cv2.imwrite() method # importing cv2 import cv2 image_path = 'geeks.png' # Using cv2.imread() method # to read the image img = cv2.imread(image_path) # Filename filename = 'savedImage.jpg' # Using cv2.imwrite() method # Saving the image cv2.imwrite(filename, img) # Reading and showing the saved image img = cv2.imread(filename) cv2.imshow("GeeksforGeeks", img) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Cambiar el tamaño de la imagen
El cambio de tamaño de la imagen se refiere a la escala de las imágenes. Ayuda a reducir la cantidad de píxeles de una imagen y eso tiene varias ventajas, por ejemplo, puede reducir el tiempo de entrenamiento de una red neuronal cuanto mayor es la cantidad de píxeles en una imagen, mayor es la cantidad de Nodes de entrada que a su vez aumenta la complejidad del modelo. También ayuda a hacer zoom en las imágenes. Muchas veces necesitamos cambiar el tamaño de la imagen, es decir, reducirla o ampliarla para cumplir con los requisitos de tamaño.
OpenCV nos proporciona varios métodos de interpolación para cambiar el tamaño de una imagen. Elección del método de interpolación para cambiar el tamaño:
- cv2.INTER_AREA: Esto se usa cuando necesitamos reducir una imagen.
- cv2.INTER_CUBIC: Esto es lento pero más eficiente.
- cv2.INTER_LINEAR: Esto se usa principalmente cuando se requiere hacer zoom. Esta es la técnica de interpolación predeterminada en OpenCV.
Ejemplo: cambio de tamaño de imagen de Python OpenCV
Python3
import cv2 import numpy as np import matplotlib.pyplot as plt image = cv2.imread("geeks.png", 1) # Loading the image half = cv2.resize(image, (0, 0), fx = 0.1, fy = 0.1) bigger = cv2.resize(image, (1050, 1610)) stretch_near = cv2.resize(image, (780, 540), interpolation = cv2.INTER_NEAREST) Titles =["Original", "Half", "Bigger", "Interpolation Nearest"] images =[image, half, bigger, stretch_near] count = 4 for i in range(count): plt.subplot(2, 3, i + 1) plt.title(Titles[i]) plt.imshow(images[i]) plt.show()
Producción:
Espacios de color
Los espacios de color son una forma de representar los canales de color presentes en la imagen que le dan a la imagen ese tono particular. Hay varios espacios de color diferentes y cada uno tiene su propio significado. Algunos de los espacios de color populares son RGB (rojo, verde, azul), CMYK (cian, magenta, amarillo, negro), HSV (tono, saturación, valor), etc.
El método cv2.cvtColor() se usa 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.
Ejemplo: espacios de color Python OpenCV
Python3
# Python program to explain cv2.cvtColor() method # importing cv2 import cv2 # path path = 'geeks.png' # Reading an image in default mode src = cv2.imread(path) # Window name in which image is displayed window_name = 'GeeksforGeeks' # Using cv2.cvtColor() method # Using cv2.COLOR_BGR2GRAY color space # conversion code image = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY ) # Displaying the image cv2.imshow(window_name, image) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Imagen giratoria
El método cv2.rotate() se usa para rotar una array 2D en múltiplos de 90 grados. La función cv::rotate rota la array de tres maneras diferentes.
Ejemplo: Python OpenCV Rotar imagen
Python3
# Python program to explain cv2.rotate() method # importing cv2 import cv2 # path path = 'geeks.png' # Reading an image in default mode src = cv2.imread(path) # Window name in which image is displayed window_name = 'Image' # Using cv2.rotate() method # Using cv2.ROTATE_90_CLOCKWISE rotate # by 90 degrees clockwise image = cv2.rotate(src, cv2.cv2.ROTATE_90_CLOCKWISE) # Displaying the image cv2.imshow(window_name, image) cv2.waitKey(0)
Producción:
Las funciones anteriores nos restringen a rotar la imagen en el múltiplo de 90 grados solamente. También podemos rotar la imagen en cualquier ángulo definiendo la array de rotación que enumera el punto de rotación, el grado de rotación y el factor de escala.
Ejemplo: Python OpenCV Rotar imagen por cualquier ángulo
Python3
import cv2 import numpy as np FILE_NAME = 'geeks.png' # Read image from the disk. img = cv2.imread(FILE_NAME) # Shape of image in terms of pixels. (rows, cols) = img.shape[:2] # getRotationMatrix2D creates a matrix needed # for transformation. We want matrix for rotation # w.r.t center to 45 degree without scaling. M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 1) res = cv2.warpAffine(img, M, (cols, rows)) cv2.imshow("GeeksforGeeks", res) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Traducción de imágenes
La traducción se refiere al desplazamiento rectilíneo de un objeto, es decir, una imagen de un lugar a otro. Si conocemos la cantidad de cambio en la dirección horizontal y vertical, digamos (tx, ty), entonces podemos hacer una array de transformación. Ahora, podemos usar la función cv2.wrapAffine() para implementar las traducciones. Esta función requiere una array de 2×3. La array numpy debe ser de tipo flotante.
Ejemplo: Python OpenCV Image Translation
Python3
import cv2 import numpy as np image = cv2.imread('geeks.png') # Store height and width of the image height, width = image.shape[:2] quarter_height, quarter_width = height / 4, width / 4 T = np.float32([[1, 0, quarter_width], [0, 1, quarter_height]]) # We use warpAffine to transform # the image using the matrix, T img_translation = cv2.warpAffine(image, T, (width, height)) cv2.imshow('Translation', img_translation) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Detección de bordes
El proceso de detección de imágenes implica la detección de bordes afilados en la imagen. Esta detección de bordes es esencial en el contexto del reconocimiento de imágenes o la localización/detección de objetos. Existen varios algoritmos para la detección de bordes debido a su amplia aplicabilidad. Usaremos uno de esos algoritmos conocido como Canny Edge Detection .
Ejemplo: Python OpenCV Canny Edge Detección
Python3
import cv2 FILE_NAME = 'geeks.png' # Read image from disk. img = cv2.imread(FILE_NAME) # Canny edge detection. edges = cv2.Canny(img, 100, 200) # Write image back to disk. cv2.imshow('Edges', edges) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Para obtener más información sobre Python OpenCV, consulte nuestro Tutorial de Python OpenCV .
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA