Capítulo 1: Primeros pasos con OpenCV

Capítulo 1: Primeros pasos con OpenCV

OpenCV es una biblioteca de visión por computadora de código abierto iniciada en 1999 por Gary Bradski de Intel. La biblioteca OpenCV está escrita en C y C ++, cubre más de 500 funciones en varios campos de la visión por computadora y puede ejecutarse en múltiples sistemas operativos. Su objetivo es proporcionar una interfaz concisa y eficiente para ayudar a los desarrolladores a construir rápidamente sistemas de visión.

Este capítulo presenta principalmente el uso simple de OpenCV

Operaciones básicas de procesamiento de imágenes:

Las operaciones más básicas del procesamiento de imágenes incluyen:

  • leer imagen
  • mostrar imagen
  • guardar imagen

1. Lee la imagen:

Use la función cv2.imread() en OpenCV para leer la imagen, que admite varios formatos de imagen estática.

La sintaxis es: retval = cv2.imread( nombre de archivo[, banderas] )

  • retval: valor devuelto, la imagen leída. Devuelve Ninguno si no se leyó ninguna imagen
  • filename: Indica la ruta completa de la imagen a leer.
  • banderas: es la bandera de lectura. Este indicador se utiliza para controlar el tipo de archivo de lectura, como se muestra en la siguiente tabla.
    Nota: Los parámetros de la primera columna y la tercera columna de la tabla son equivalentes. Es decir: cv2.IMREAD_UNCHANGED = -1
valor significado valor
cv2.IMREAD_UNCHANGED Mantener el formato original sin cambios -1
cv2.IMREAD_GRAYSCALE Cambiar el tamaño de la imagen a una imagen en escala de grises de un solo canal 0
cv2.IMREAD_COLOR Cambie el tamaño de la imagen a una imagen BGR de 3 canales. Este valor es el predeterminado 1
cv2.IMREAD_ANYDEPTH Cuando la profundidad de la imagen cargada es de 16 bits o 32 bits, devuelve la imagen de su profundidad correspondiente; de ​​lo contrario, conviértala a una imagen de 8 bits 2
cv2.IMREAD_ANYCOLOR Leer una imagen en cualquier formato de color posible 4
cv2.IMREAD_LOAD_GDAL Cargue la imagen usando el controlador gdal 8
cv2.IMREAD_REDUCED_GRAYSCALE_2 Convierta la imagen a una imagen en escala de grises de un solo canal y reduzca el tamaño de la imagen a la mitad
cv2.IMREAD_REDUCED_COLOR_2 Convierta la imagen a una imagen en color BGR de 3 canales y reduzca el tamaño de la imagen a la mitad
cv2.IMREAD_REDUCED_GRAYSCALE_4 Convierta la imagen a una imagen en escala de grises de un solo canal y reduzca el tamaño de la imagen en 1/4
cv2.IMREAD_REDUCED_COLOR_4 Convierta la imagen a una imagen en color BGR de 3 canales y reduzca el tamaño de la imagen en 1/4
cv2.IMREAD_REDUCED_GRAYSCALE_8 Convierta la imagen a una imagen en escala de grises de un solo canal y reduzca el tamaño de la imagen en 1/8
cv2.IMREAD_REDUCED_COLOR_8 Convierta la imagen a una imagen en color BGR de 3 canales y reduzca el tamaño de la imagen en 1/8
cv2.IMREAD_IGNORE_ORIENTATION Girar imagen sin orientación EXIF ​​como marcador

La función cv2.imread() admite la lectura de muchos tipos diferentes de imágenes:

inserte la descripción de la imagen aquí

Por ejemplo: leer una imagen usando la función cv2.imread()

import cv2
lena = cv2.imread("sky.png")
print(lena)

2. Muestre la imagen:

OpenCV proporciona varias funciones relacionadas con la visualización:

  • función namedWidow:

  • utilizado para crear una ventana con el nombre especificado

  • Formato de gramática: Ninguno = cv2.namedWindow( winname ) donde winname se refiere al nombre de la ventana creada
    Por ejemplo, cree una ventana llamada lección

    CV2.namedWindow("lesson")
    
  • función immostrar:

    • utilizado para mostrar imágenes
    • Formato de sintaxis: Ninguno = cv2.imshow( winname, mat ) donde winname es el nombre de la ventana y mat es la imagen que se mostrará.

    Por ejemplo:

    import cv2
    lena = cv2.imread("lena.bmp")
    cv2.namedWindow("lesson")
    cv2.imshow("lesson", lena)
    

    En el código anterior, primero lea la imagen lena.bmp a través de la función cv2.imread(), luego cree una ventana llamada lección a través de la función cv2.namedWindow() y finalmente muestre la imagen en la ventana de la lección a través de cv2.imshow () función lena.bmp.

    Nota : en el uso real, también es posible no crear una ventana, usar directamente la función cv2.imshow() para referirse a un espacio de creación inexistente y mostrar la imagen especificada en él, como:

    import cv2
    lena = cv2.imread("lena.bmp")
    cv2.imshow("demo", lena)
    
  • Función de tecla de espera:

    • Se usa para esperar la tecla, cuando el usuario presiona el teclado, la declaración se ejecutará y devolverá un valor
    • Sintaxis: retval = cv2.waitKey([retraso])
      • retval: Indica el valor de retorno. Si no se presiona ninguna tecla, devuelve -1; si hay una clave registrada, devuelve el código ASCII de la tecla
      • retardo: Indica el tiempo de espera para el disparo del teclado, la unidad es ms. Cuando el valor es negativo o 0, significa esperar infinitamente. El valor predeterminado es 0

    En el uso real, la tecla presionada se puede obtener a través de la función cv2.waitKey(), y se pueden realizar diferentes respuestas a diferentes teclas para realizar la función interactiva.

    import cv2
    lenam = cv2.imread("lena.png")
    cv2.imshow("demo", lena)
    key = cv2.waitKey()
    if key == ord("A"):
        CV2.imshow("PressA", lena)
    elif key == ord("B"):
    	cv2.imshow("PressB", lena)
    
  • Función destruir ventana:

    • Se utiliza para liberar (destruir) la ventana especificada
    • Sintaxis: Ninguno = cv2.destroyWindow( winname ) winname es el nombre de la ventana
    import cv2
    lena = cv2.imread("lena.png")
    cv2.imshow("demo", lena)
    cv2.waitKey()
    cv2.destroyWindow("demo")
    
  • función destruir todas las ventanas

    • Se utiliza para liberar (destruir) todas las ventanas
    • Sintaxis: Ninguno = cv2.destroyAllWindows()
    import cv2
    lena = cv2.imread("lena.png")
    cv2.imshow("demo1", lena)
    cv2.imshow("demo2", lena)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

3. Guarda la imagen

Use la función cv2.imwrite() en OpenCV para guardar la imagen, la sintaxis de esta función es:

  • retval = cv2.imwrite( nombre de archivo , img [, parámetros ])

parámetro:

  • retval: valor de retorno. Devuelve True si el guardado fue exitoso, False si falló
  • nombre de archivo: la ruta completa del archivo de destino para guardar.
  • img: la imagen a guardar
  • params: guardar parámetros de tipo, opcional.
import cv2
lena = cv2.imread("lena.png")
r = cv2.imwrite("result.png", lena)

Introducción a la biblioteca de contribuciones de OpenCV

Actualmente, la biblioteca OpenCV consta de las siguientes dos partes:

  • Biblioteca principal de OpenCV: la biblioteca OpenCV comúnmente instalada, que es madura y estable y es mantenida por el equipo principal de OpenCV
  • Biblioteca de contribución de OpenCV: el nombre de la biblioteca de extensión es opencv_contrib, que es desarrollado y mantenido principalmente por la comunidad. Contiene aplicaciones visuales más completas que la biblioteca principal de OpenCV. Cabe señalar que la Biblioteca Contribuida de OpenCV contiene partes sin licencia de OpenCV y contiene algoritmos protegidos por patente. Por lo tanto, se debe prestar especial atención antes de utilizar este módulo.
  • La biblioteca de contribuciones de OpenCV contiene muchos módulos de extensión:
    • bioinspired: módulo de visión biológica
    • conjuntos de datos: módulo de lectura de conjuntos de datos
    • dnn: Módulo de red neuronal profunda
    • cara: módulo de reconocimiento facial
    • matlab: módulo de interfaz MATLAB
    • Estéreo: módulo de combinación estéreo binocular
    • texto: módulo de coincidencia de texto visual
    • seguimiento: módulo de seguimiento de objetivos basado en la visión
    • ximgpro: módulo de extensión de procesamiento de imágenes
    • xobjdetect: módulo de detección de objetos 2D mejorado
    • conjuntos de datos: módulo de lectura de conjuntos de datos
    • dnn: Módulo de red neuronal profunda
    • cara: módulo de reconocimiento facial
    • matlab: módulo de interfaz MATLAB
    • Estéreo: módulo de combinación estéreo binocular
    • texto: módulo de coincidencia de texto visual
    • seguimiento: módulo de seguimiento de objetivos basado en la visión
    • ximgpro: módulo de extensión de procesamiento de imágenes
    • xobjdetect: módulo de detección de objetos 2D mejorado
    • xphoto: módulo de extensión de fotografía computacional

Supongo que te gusta

Origin blog.csdn.net/weixin_57440207/article/details/120619952
Recomendado
Clasificación