Problemas com a exibição de imagens editadas em um GUI criado em MATLAB
-
12-09-2019 - |
Pergunta
Eu tenho uma atribuição para criar uma GUI usando MATLAB GUIA e estou tendo um problema com a exibição de uma imagem editada. Eu preciso ter botões que editar a imagem (por exemplo. Remover vermelho, azul, componentes verdes e Rodar) e de exibição que imagem editada. Eu estou usando imshow
para exibir a imagem editada, mas ele é exibido em uma nova janela e desliga o GUI que eu tinha em execução. Alguém pode ajudar?
Eu tenho trabalhado sobre isso e ter tentado inúmeras maneiras diferentes de corrigir o problema, mas nenhum funcionou. No entanto, estou usando MATLAB 7.0.1 e 7.7.0 pode ter uma atualização para este problema.
Solução
Quando você traçar primeiro a imagem com imshow
, tê-lo retornar um identificador para o objeto de imagem que ele cria:
A = (the initial matrix of image data);
hImage = imshow(A);
Então, para atualizar a imagem com os novos dados, tente o seguinte em vez de chamar imshow
novamente:
B = (modification of the original image matrix A);
set(hImage, 'CData', B);
Usando o comando set
vai mudar o objeto de imagem que você já criado (uma lista de propriedades de imagem objeto pode ser encontrada aqui ).
Como alternativa, você também pode adicionar parâmetros adicionais para uma chamada para imshow
para dizer-lhe que os eixos objeto para traçar a imagem em:
hAxes = (the handle to an axes object);
imshow(A, 'Parent', hAxes);
EDIT:
Dirigindo seu problema adicional de compartilhamento de dados GUI entre as funções, você deve verificar se a documentação MATLAB aqui . Como observado lá, há algumas maneiras diferentes para passar dados entre diferentes funções envolvidas em uma GUI: funções de nidificação (mencionado no SO aqui ), usando a propriedade de objetos do 'UserData' (mencionado no SO aqui ), ou usando as funções de setappdata
/ getappdata
ou guidata
. A opção guidata
pode ser melhor para uso com interfaces gráficas feitas em GUIDE.
Outras dicas
As funções de arquivo GUI m atribuir automaticamente os dados de imagem para uma variável chamada hObject
. Depois de ter feito a sua imagem alteração, você tem que transferir os novos dados para hObject
:
hObject = imshow(newimagedata)
Não se esqueça de atualizar e salvar esta operação por:
guidata(hObject, handles)