es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Visualización de gráficos en PySimpleGUI mostrando una imagen directamente.

Estoy tratando de usar Pysimplegui y su componente “graph” para crear una aplicación en la que el usuario pueda dibujar polígonos en una imagen. Aquí está una parte de mi código:

layout = [[sg.Graph(
    canvas_size=(longitud, ancho),
    graph_bottom_left=(0, 0),
    graph_top_right=(longitud, ancho),
    key="-GRAPH-",
    change_submits=True,  # eventos de clic del mouse
    background_color='azulclaro',
    drag_submits=True),],]
ventana = sg.Window("Dibujar rectángulo en imagen", layout, finalize=True)
grafico = ventana["-GRAPH-"]

Aquí, longitud y ancho se refieren al tamaño de la imagen que tengo. La única forma que conozco para mostrar la imagen es mediante graph.draw_image(ruta, ubicación=(0, ancho)), donde la ruta es la ubicación de un archivo png.

Mi pregunta es: ¿Hay alguna forma de mostrar una imagen en el gráfico utilizando directamente la imagen y no una ruta? Es decir, si tengo un array de numpy ND que representa una imagen, ¿es posible mostrarlo directamente en el lienzo en lugar de guardarla primero como png y luego cargarla? ¿Es posible evitar cualquier tipo de guardado?

Intuitivamente, el método graph.draw_image lee la ruta y abre la imagen para luego mostrarla. Debería haber un método para evitar cualquier guardado y hacer que el gráfico muestre directamente una imagen.

Tags:  

Answer

  1. Avatar for davy.ai

    Hasta donde yo sé, no hay forma de mostrar directamente una imagen en graph en PySimpleGUI sin guardarla primero como un archivo. El método graph.draw_image requiere una ruta de archivo para cargar la imagen y mostrarla en el lienzo. Si tienes un arreglo nd numpy que representa una imagen, es posible que desees guardarla primero como un archivo y luego usar graph.draw_image para mostrar la imagen.

    Sin embargo, podría haber otras bibliotecas o métodos que te permitan mostrar una imagen sin guardarla primero como archivo. Podría valer la pena investigar otras bibliotecas de procesamiento de imágenes como OpenCV o Pillow para ver si tienen métodos alternativos para mostrar imágenes directamente en un lienzo.

Comments are closed.