Problemas con la visualización de imágenes editadas en una interfaz gráfica de usuario creada en MATLAB

StackOverflow https://stackoverflow.com/questions/768510

Pregunta

Tengo una misión para crear una interfaz gráfica de usuario utilizando MATLAB GUIDE y estoy teniendo un problema con la visualización de una imagen editada. Es necesario disponer de botones que editar la imagen (por ejemplo. Eliminar el rojo, azul, verde y componentes giran) y muestran que la imagen editada. Estoy usando imshow para mostrar la imagen editada pero muestra en una nueva ventana y apaga la interfaz gráfica de usuario que había en funcionamiento. ¿Alguien puede ayudar?

He estado trabajando en esto y he intentado muchas maneras diferentes de solucionar el problema, pero ninguno funcionó. Sin embargo, estoy usando MATLAB 7.0.1, 7.7.0 y podría tener una actualización para este problema.

¿Fue útil?

Solución

La primera vez que trazar la imagen con imshow , tenerlo devolver un identificador para el objeto de imagen que crea:

A = (the initial matrix of image data);
hImage = imshow(A);

A continuación, para actualizar la imagen con nuevos datos, intente lo siguiente en lugar de llamar imshow nuevo:

B = (modification of the original image matrix A);
set(hImage, 'CData', B);

El uso del comando set va a cambiar el objeto de imagen que ya creado (una lista de las propiedades del objeto imagen se puede encontrar aquí ).

Como alternativa, también se puede añadir parámetros adicionales para una llamada a imshow contarla qué ejes objeto de trazar la imagen en:

hAxes = (the handle to an axes object);
imshow(A, 'Parent', hAxes);

EDIT:

Abordar el problema adicional de compartir datos entre las funciones de interfaz gráfica de usuario, que debe salir de la documentación de MATLAB aquí . Como se ha señalado allí, hay algunas maneras diferentes para pasar datos entre diferentes funciones involucradas en una interfaz gráfica de usuario: funciones de anidación (mencionados en SO aquí ), utilizando la propiedad de los objetos 'UserData' (mencionado en SO aquí ), o el uso de las funciones setappdata / getappdata o guidata . La opción guidata puede ser mejor para su uso con interfaces gráficas de usuario hechas en GUÍA.

Otros consejos

Las funciones de archivos GUI m asignan automáticamente los datos de imagen a una variable llamada hObject. Una vez que haya hecho su alteración imagen, usted tiene que volver a asignar los nuevos datos a hObject:

hObject = imshow(newimagedata)

No se olvide de actualizar y guardar esta operación por:

guidata(hObject, handles)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top