Complément : Présentation de AppDesigner (programmation événementielle un peu comme AppInventor)
Le designer présente deux vues
une vue "design" pour l'IHM, on ajoute sur une grille des composants (image, bouton, liste déroulante etc.)
une vue "code" avec le code Matlab.
On peut ensuite associer du code (action) à des événements (quand on clique sur un bouton par exemple). La programmation est orientée objet, on parlera de propriétés plutôt que de variables et de méthodes plutôt que des fonctions.
Méthode : Ouvrir le fichier de démarrage Matlab App Designer
Ouvrir le fichier 'VigneNetteStart.mlapp' sous Matlab AppDesigner. (C'est une version simplifiée de l'exemple 'Analyze an Image'

Modifier l'interface (layout)⚓
Attention : « label » sous AppDesigner
une zone de texte courte est appelée « label » sous AppDesigner, ce qui peut prêter à confusion avec le « label » de l'image à trouver (sa catégorie).
Méthode : Ajouter le label
Se mettre en « Design View »
Ajouter un composant texte pour l'affichage du label (qui sera modifié par le programme)
Ajouter un composant texte à afficher à côté (non modifiable)

Méthode : Facultatif : supprimer le menu déroulant avec les deux images préchargées
Cela permet de simplifier l'interface.
Pour ne pas avoir d'erreur, il faut aussi supprimer le code correspondant.
% Callback functionfunction DropDownValueChanged(app, event)
endModification du code⚓
Méthode : Accéder rapidement à une méthode
Zones blanches / zones grises
Les zones grises ne sont pas éditables, elles sont générées automatiquement Matlab.
Méthode : Chargement du cnn
Se placer en 'Code View'
Créer une propriété avec le menu dans l'éditeur. Ainsi le réseau sera accessible dans toute l'application.
Définir le réseau
properties (Access = private)
net % le cnn
endLes propriétés définies pour l'application sont accessibles dans tout le code en préfixant avec
app.
Ici le réseau sera donc accessible avec
app.net
Charger le réseau au démarrage de l'application (startupFcn)
function startupFcn(app)
% Configure image axesapp.ImageAxes.Visible = 'off';
app.ImageAxes.Colormap = gray(256);
axis(app.ImageAxes, 'image');
% Chargement du cnnapp.net = alexnet;
% Update the image and histogramsupdateimage(app, 'peppers.png');
endAffichage du label
Le calcul et l'affichage du libellé se fait quand l'utilisateur a sélectionné une image. Code sur l'action "loadButton"
function LoadButtonPushed(app, event)
% Display uigetfile dialogfilterspec = {'*.jpg;*.tif;*.png;*.gif','All Image Files'};
[f, p] = uigetfile(filterspec);
% Make sure user didn't cancel uigetfile dialogif (ischar(p))
fname = [p f];
updateimage(app, fname);
end endOn peut donc afficher le label juste sous l'affichage de l'image, dans "updateimage"
%crée le label img = imresize(im, [227 227]);
label = classify(app.net, img);
% le composant "Label" reçoit comme propriété Text le label prédit par le réseauapp.Label.Text = label;
Exporter l'application⚓
Créer une application standalone
Le menu "Share" permet de créer une application autonome, qui pourra s'exécuter sur un autre PC, même si Matlab n'est pas installé.
Share > Standalone Desktop App
permet de créer un exécutable qui installera une application sous Windows.




