Blog
Funciones para dibujar
- Publicado por: Alberto Sosa-Costa
- Categoría: Blog OpenCV Procesamiento de Imagenes
Aprender a dibujar diferentes formas geométricas con OpenCV, utilizando las funciones: cv2.line(), cv2.circle() , cv2.rectangle(), cv2.ellipse(), cv2.putText(), etc.
Funciones para dibujar en OpenCV
Todas las funciones para dibujar, como las mencionadas anteriormente, tienen algunos argumentos comunes. A continuación se muestran algunos de ellos:
- img: La imagen donde se desea dibujar la forma geométrica
- color: Color de la forma. En el caso del espacio de colores BGR, debemos pasar los valores como una tupla, ej: (255, 0, 0) para el azul. Por otra parte, para la escala de grises sólo se debe pasar un valor escalar.
- thickness: Grosor de la línea, círculo, etc. En el caso de figuras cerradas como el círculo, un valor de thickness=-1 llenará el interior de la figura. El valor por defecto de este parámetro es =1.
- lineType: Tipo de línea, ya sea 8-conectada, suavizada, etc. Por defecto, es 8-conectada. Con cv2.LINE_AA se obtiene una línea suavizada que luce genial para las curvas.
Dibujando una línea
Para dibujar una línea, es necesario introducir las coordenadas iniciales y finales de la línea. En el siguiente ejemplo crearemos una imagen en negro y dibujaremos una línea horizontal verde a la altura media de la imagen.
import numpy as np import cv2 # Crea una imagen en negro img = np.zeros((512,512,3), np.uint8) # Dibuja una línea horizontal verde con un grosor de 4 px img = cv2.line(img,(0,255),(511,255),(0,255,0),4)
Dibujando un rectángulo
Para dibujar un rectángulo se necesitan especificar las coordenadas de la esquina superior izquierda y la esquina inferior derecha del rectángulo. El ejemplo a continuación, dibuja un rectángulo azul en la parte inferior de la imagen.
img = cv2.rectangle(img,(210,360),(300,500),(255,0,0),3)
Dibujando un círculo
Para dibujar un círculo debes indicar las coordenadas del centro y el valor del radio. A continuación se muestra cómo dibujar un círculo rojo, de radio igual a 100 px, insertado en el centro de la imagen.
img = cv2.circle(img,(255,255), 100, (0,0,255), -1)
Dibujando una elipse
img = cv2.ellipse(img,(255,105),(100,50),0,0,180,255,-1)
Dibujando un polígono
Para dibujar un polígono es necesario especificar las coordenadas de los vértices. Construye las coordenadas en un arreglo de dimensiones ROWSx1x2
, donde ROWS es el número de vértices y debe ser de tipo int32
. A continuación se muestra el código para dibujar un pequeño triángulo de color amarillo.
pts = np.array([[180,120],[330,120],[255,140]], np.int32) pts = pts.reshape((-1,1,2)) img = cv2.polylines(img,[pts],True,(0,255,255))
- Si el tercer argumento en cv2.polylines es False, entonces se obtendrá una línea poligonal abierta.
- cv2.polylines se puede utilizar para dibujar varias líneas. Basta con crear una lista de todas las líneas que se desean dibujar y pasarla a la función. Todas las líneas se dibujarán individualmente. Es una manera mejor y más rápida de dibujar un grupo de líneas que llamar a cv2.line() para cada línea.
Agregando texto a las imágenes
Para agregar un texto en las imágenes, es necesario especificar los siguientes atributos:
- Datos de texto que desea escribir.
- Coordenadas del sitio donde quiere colocar el texto en la imagen (es decir, la esquina inferior izquierda donde comienza el texo).
- Tipo de fuente (Comprobar documentos cv2.putText () para las fuentes compatibles)
- Escala de fuentes (especifica el tamaño de la fuente)
- Otros como, color, grosor, lineType, etc. Para una mejor visualización, se recomienda lineType = cv2.LINE_AA.
En el ejemplo a continuación, escribiremos “DRAWING” en color blanco sobre la imagen con fondo negro.
font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(img,'DRAWING',(40,90), font, 3,(255,255,255),2,cv2.LINE_AA)
Resultado final de nuestros dibujos
Es hora de ver el resultado final de todos los dibujos que hemos ido haciendo a lo largo de esta entrada. Recuerda, de clases anteriores, que para mostrar una imagen debes utilizar las instrucciones siguientes:
# Mostrar la imagen cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()

¡Bien! Hemos visto como crear formas geométricas básicas con OpenCV.
En nuestro curso Python de OpenCV puedes a aprender muchas mas operaciones con imágenes:
Curso de Procesamiento de Imágenes y Visión Artificial
[…] ➡ Funciones para Dibujar […]
Se puede dibujar una imagen de en vez de un texto o un rectangulo..