Integración de OpenCV con Tkinter en Python

Integración de OpenCV con Tkinter en Python

Introducción

OpenCV es una biblioteca de código abierto para el procesamiento de imágenes y visión artificial. Tkinter es un módulo de Python para la creación de interfaces gráficas de usuario (GUI). En este tutorial, veremos cómo integrar OpenCV con Tkinter para crear una aplicación GUI que pueda mostrar imágenes y realizar operaciones de procesamiento de imágenes.

Requisitos

Para seguir este tutorial, necesitará tener instalado Python 3.6 o superior. También necesitará instalar la biblioteca OpenCV. Puede instalar OpenCV usando el administrador de paquetes de su distribución de Linux o macOS. En Windows, puede instalar OpenCV usando el instalador oficial.

Ejemplo simple

En este ejemplo, crearemos una aplicación GUI simple que muestra una imagen.

Python
import tkinter as tk
import cv2

def show_image(image):
    # Crea una ventana de Tkinter
    root = tk.Tk()

    # Crea un widget Canvas para mostrar la imagen
    canvas = tk.Canvas(root, width=image.shape[1], height=image.shape[0])
    canvas.pack()

    # Dibuja la imagen en el Canvas
    canvas.create_image((0, 0), image=image)

    # Muestra la ventana
    root.mainloop()

# Lee la imagen
image = cv2.imread("image.jpg")

# Muestra la imagen
show_image(image)

Este código crea una ventana de Tkinter con un widget Canvas. El widget Canvas se usa para mostrar la imagen. El método create_image() del widget Canvas se usa para dibujar la imagen en el lienzo.

Para ejecutar este código, guarde el código en un archivo llamado main.py y ejecute el siguiente comando:

python main.py

Esto abrirá una ventana de Tkinter que muestra la imagen.

Operaciones de procesamiento de imágenes

Una vez que haya integrado OpenCV con Tkinter, puede realizar operaciones de procesamiento de imágenes en las imágenes que se muestran en la GUI. Por ejemplo, puede usar OpenCV para rotar, escalar o cambiar el color de las imágenes.

En el siguiente ejemplo, usaremos OpenCV para rotar una imagen 90 grados en sentido antihorario.

Python
import tkinter as tk
import cv2

def show_image(image):
    # Crea una ventana de Tkinter
    root = tk.Tk()

    # Rota la imagen 90 grados en sentido antihorario
    image = cv2.rotate(image, cv2.ROTATE_90_COUNTERCLOCKWISE)

    # Crea un widget Canvas para mostrar la imagen
    canvas = tk.Canvas(root, width=image.shape[1], height=image.shape[0])
    canvas.pack()

    # Dibuja la imagen en el Canvas
    canvas.create_image((0, 0), image=image)

    # Muestra la ventana
    root.mainloop()

# Lee la imagen
image = cv2.imread("image.jpg")

# Muestra la imagen
show_image(image)

Este código rota la imagen 90 grados en sentido antihorario antes de mostrarla en la GUI.

Conclusión

En este tutorial, vimos cómo integrar OpenCV con Tkinter para crear una aplicación GUI que pueda mostrar imágenes y realizar operaciones de procesamiento de imágenes.

Para obtener más información sobre OpenCV, puede consultar la documentación oficial: https://docs.opencv.org/master/.

Referencias

  • OpenCV: https://docs.opencv.org/master/
  • Tkinter: https://docs.python.org/3/library/tkinter.html