Problemas con la visualización de imágenes editadas en una interfaz gráfica de usuario creada en MATLAB
-
12-09-2019 - |
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.
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)