Visión artificial. Tomás Domínguez Mínguez

Чтение книги онлайн.

Читать онлайн книгу Visión artificial - Tomás Domínguez Mínguez страница 9

Visión artificial - Tomás Domínguez Mínguez

Скачать книгу

anterior es que se sustituye la función imshow(), que muestra la rejilla en pantalla, por imwrite(), que la almacena en el archivo “rejilla.jpg”, dentro de la carpeta “imagenes”.

      cv2.imwrite(‘../imagenes/rejilla.jpg’, img)

Illustration

      Los nombres de los archivos siempre deben tener una extensión, correspondiente a cualquiera de los formatos admitidos. De lo contrario, obtendrá el error: “could not find a writer for the specified extension in function ‘cv::imwrite”.

Illustration

      Si, por equivocación, indicara mal la ruta en la que debe situarse el archivo y esta no existiera, el programa no avisaría del error. Simplemente, no haría nada.

      Ejecute el programa y, cuando en la shell de Python aparezca el mensaje “Imagen almacenada”, compruebe que en el directorio “imagenes” exista el archivo creado. Al abrirlo, verá la rejilla que acaba de dibujar.

Illustration Illustration

      Si quiere ver las imágenes de la carpeta donde se almacenan sin necesidad de abrirlas, en el explorador de Windows seleccione la opción “Iconos grandes” del menú “Vista”.

Illustration

      Unidad 4

      FUNCIONES DE INTERFAZ GRÁFICA DE USUARIO

      En este capítulo conocerá las funciones gráficas básicas de creación de interfaces de usuario proporcionadas por OpenCV. Las utilizará para dibujar líneas, delimitar áreas o superponer textos informativos que muestren visualmente los resultados del procesamiento y el análisis de imágenes realizados.

      La primera de estas funciones tiene que ver con el manejo de ventanas. Veamos qué es lo que ofrece.

      Hasta ahora, las ventanas en las que ha mostrado las imágenes se han creado automáticamente con la función imshow(). Sin embargo, OpenCV permite más posibilidades de creación y configuración. Veamos cuáles son las principales.

      Para crear una ventana, OpenCV proporciona la función:

      namedWindow(ventana)

      El argumento de esta función es el nombre de la ventana, que es el que aparece en su barra de título. Además, dicho nombre será el utilizado en la lógica del programa para identificarla y, de esta forma, poder asociarla a imágenes, eventos de teclado o ratón, barras de desplazamiento, etc.

      Opcionalmente, tiene un segundo argumento que puede tomar los siguientes valores:

      • WINDOW_NORMAL. Permite cambiar el tamaño de la ventana sin restricciones.

      • WINDOW_AUTOSIZE. El tamaño de la ventana se ajusta automáticamente al de la imagen mostrada, no puede ser modificada de forma manual.

      • WINDOW_OPENGL. La ventana se creará con soporte OpenGL.

Illustration

      OpenGL (Open Graphics Library) es un estándar que define una API multilenguaje y multiplataforma para el desarrollo de gráficos 2D y 3D.

      Si lo que desea es mover una ventana a una posición concreta del escritorio, use la función:

      moveWindow(nombre ventana, x, y )

      El primer argumento es el nombre de la ventana que se va a desplazar a las coordenadas x, y fijadas en los otros dos argumentos.

      Para redimensionar una ventana, utilice la función:

      resizeWindow(ventana, ancho, alto )

      En este caso, la ventana indicada en el primer argumento adquiere las dimensiones establecidas en los otros dos argumentos.

      Para cerrar una ventana, llame a la función:

      destroyWindow(ventana)

      Si lo que quiere es cerrar todas las ventanas que se hayan podido abrir en el programa, use esta otra función:

      destroyAllWindows()

      El siguiente programa muestra la imagen del cuadro de la niña, pero con una serie de particularidades.

Illustration

      Lo primero que se hace en el programa después de importar la librería OpenCV es cargar la imagen con el cuadro de la niña.

      img = cv2.imread(‘../imagenes/cuadro.jpg’, 1)

      Luego se crea una ventana (llamada “Cuadro”) utilizando la función namedWindow() con el flag WINDOW_NORMAL, por lo que, a diferencia de cuando se creaba con la función imshow(), ahora podrá redimensionarla sin restricciones. Además, al cerrar la ventana, si ejecutara de nuevo el programa, aparecería con las mismas dimensiones que tenía cuando la cerró.

      cv2.namedWindow(‘Cuadro’, cv2.WINDOW_NORMAL)

      Una vez creada la ventana, se mostrará en la parte superior izquierda del escritorio.

      cv2.moveWindow(‘Cuadro’, 0, 0)

      Por último, se muestra la imagen en dicha ventana.

      cv2.imshow(‘Cuadro’, img)

      Ejecute el programa y compruebe que su funcionamiento es el descrito.

      La función proporcionada por OpenCV para el dibujo de líneas (en realidad, se trataría de segmentos, ya que tienen un principio y un fin) es:

      line(imagen, punto inicial, punto final, color, grosor)

      El primer argumento de esta función es una imagen que representa el lienzo sobre el que se va a pintar la línea. El punto inicial y final son dos tuplas con las coordenadas x, y de los extremos del segmento. El color con el que se va a dibujar es otra tupla con los componentes B, G, R. El último argumento establece el grosor (en píxeles) de la línea.

      El resultado de dicha función es la imagen pasada como argumento, sobre la que se ha dibujado la línea.

      Si quisiera que la línea acabara con una punta de flecha, la función utilizada sería:

      arrowedLine(imagen, punto inicial, punto final, color, grosor)

      Como

Скачать книгу