Savoir détecter un objet en fonction de la couleur
Comprendre le principe de détection et classification par couleurs
Savoir générer une action avec Arduino au moment de la détection
Savoir transférer l’état du détecteur à la carte Arduino
Savoir coder les couleurs sur 1 bit ou N bits
Etc.
Principe
Le principe consiste commander trois LEDs (sorties TOR) en fonction de la valeur acquise via le port série. Autrement dit, en fonction de la couleur détectée. Les LEDs sont branchées dans les pins 50, 48 et 46 de la carte Arduino Mega. La fonction Serial.parseInt() permet de scruter le port série à la recherche d’une valeur entière, si la valeur est égale à :
R=10 : Allumage de la LED 1 (50) seule,
G=20 : Allumage de la LED 2 (48) seule,
B=30 : Allumage de la LED 3 (46) seule,
X : éteindre les trois LEDs.
Le programme Matlab
close all; clc; clear all;
%% Ouverture de la Caméra (Multi-sources) Type=1; % 0(GRAY), 1(RGB) Source=2; % 1(CAM1), 2(CAM2), ... cam=openCam(Type,Source); % figure(1); imshow(getsnapshot(cam)); return;
%% Ouverture du port série namePort='COM3'; baudValue=9600; SerialCOM = openSerial(namePort, baudValue);
%% Paramètres du programme M=512; N=512; im=zeros(M,N,3); DET_RGB0=zeros(1,3); im_RGB=zeros(M,N,3);
%% Détection & Transfert vers Arduino while 1 %% 1. Lecture de l'image courante im0=getsnapshot(cam); im(:,:,1)=imresize(im0(:,:,1),[M N]); im(:,:,2)=imresize(im0(:,:,2),[M N]); im(:,:,3)=imresize(im0(:,:,3),[M N]);
%% 2. Détection de l'objet (par couleur) Seuil=0.1; % Seuil de conversion au format binaire numPix=10; % Seuil de comptage des pixels allumés [im_RGB(:,:,1), DET_RGB0(1)]=getObj(im, Seuil, 'R'); [im_RGB(:,:,2), DET_RGB0(2)]=getObj(im, Seuil, 'G'); [im_RGB(:,:,3), DET_RGB0(3)]=getObj(im, Seuil, 'B');
RGB8= DET_RGB0
% Conversion de format DET_RGB=double(DET_RGB0>numPix)