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.

Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top