From 04ee12c44f2731cf17b6affb9d2d199680b64779 Mon Sep 17 00:00:00 2001
From: Robin VAN DE MERGHEL <robin.van_de_merghel@etu.uca.fr>
Date: Thu, 23 Mar 2023 11:57:01 +0100
Subject: [PATCH] New VR Course

---
 .../Exos/2023-03-22/contours/contours.pde     | 238 ++++++++++++++++++
 .../Exos/2023-03-22/contours/data/harold.jpeg | Bin 0 -> 14383 bytes
 2 files changed, 238 insertions(+)
 create mode 100644 Realite Virtuelle/Exos/2023-03-22/contours/contours.pde
 create mode 100644 Realite Virtuelle/Exos/2023-03-22/contours/data/harold.jpeg

diff --git a/Realite Virtuelle/Exos/2023-03-22/contours/contours.pde b/Realite Virtuelle/Exos/2023-03-22/contours/contours.pde
new file mode 100644
index 0000000..b8d484c
--- /dev/null
+++ b/Realite Virtuelle/Exos/2023-03-22/contours/contours.pde	
@@ -0,0 +1,238 @@
+// On ouvre la webcam
+// Convertir l'image en Noir et Blanc
+// On va calculer le gradient
+
+import processing.video.*;
+
+Capture webCam;      // Declaration de la Capture par Camera
+String[] cameras;    // Liste textuelle des webCams disponibles
+
+
+float[][] convolutionMatrix; // Matrice du gradient
+
+PImage bnwImage; // Image en noir et blanc
+
+void setup() {
+    
+    size(640, 480);
+    
+    //On liste les webCams disponibles
+    cameras = Capture.list();
+    
+    //On ouvre la premiere webCam
+    webCam = new Capture(this, cameras[0]);
+    webCam.start();
+
+	//On initialise l'image en noir et blanc
+	bnwImage = createImage(width, height, RGB);
+    
+}
+
+void draw() {
+    
+    // On affiche l'image de la webcam
+	if (webCam.available() == true) {
+		webCam.read();
+	}
+
+	// On convertit l'image en noir et blanc et le stock dans bnwImage
+	bnwImage = convertToBNW(webCam);
+
+
+    // On initialise la matrice du gradient avec des valeurs pour un gradient en croix
+    convolutionMatrix = new float[][]{
+		{0, 1, 0},
+		{1, -4, 1},
+		{0, 1, 0}
+	};
+
+	bnwImage = seuillage(bnwImage, 140);
+
+	bnwImage = stretching(bnwImage);
+
+	// On applique le gradient
+	bnwImage = convolution(bnwImage, convolutionMatrix);
+
+	// // On fait un seuillage
+	bnwImage = seuillage(bnwImage, 50);
+
+
+	// On affiche l'image en noir et blanc
+	image(bnwImage, 0, 0);
+
+}
+PImage stretching(PImage img) {
+
+	int min = 255;
+	int max = 0;
+
+	// On parcourt l'image
+	for (int x = 0; x < img.width; x++) {
+		for (int y = 0; y < img.height; y++) {
+			
+			// On recupere la couleur de l'image d'origine
+			int c = img.get(x, y);
+			
+			// On recupere les composantes RVB de la couleur
+			float r = red(c);
+			float g = green(c);
+			float b = blue(c);
+			
+			// On calcule la moyenne des composantes RVB
+			float moyenne = (r + g + b) / 3;
+
+			if (moyenne < min) {
+				min = (int) moyenne;
+			}
+
+			if (moyenne > max) {
+				max = (int) moyenne;
+			}
+		}
+	}
+	
+	// On cree une image de meme taille que l'image d'origine
+	PImage stretchingImage = createImage(img.width, img.height, RGB);
+	
+	// Tout ce qui est en dessous de min devient noir, tout ce qui est au dessus de max devient blanc
+	for (int x = 0; x < img.width; x++) {
+		for (int y = 0; y < img.height; y++) {
+			
+			// On recupere la couleur de l'image d'origine
+			int c = img.get(x, y);
+			
+			// On recupere les composantes RVB de la couleur
+			float r = red(c);
+			float g = green(c);
+			float b = blue(c);
+			
+			// On calcule la moyenne des composantes RVB
+			float moyenne = (r + g + b) / 3;
+			
+			// On cree une couleur avec la moyenne des composantes RVB
+			int c2;
+			if (moyenne < min) {
+				c2 = color(0, 0, 0);
+			} else if (moyenne > max) {
+				c2 = color(255, 255, 255);
+			} else {
+				c2 = color(moyenne, moyenne, moyenne);
+			}
+			
+			// On affecte la couleur a l'image en noir et blanc
+			stretchingImage.set(x, y, c2);
+		}
+	}
+
+	// On retourne l'image en noir et blanc
+	return stretchingImage;
+
+}
+
+PImage seuillage(PImage img, int seuil) {
+	
+	// On cree une image de meme taille que l'image d'origine
+	PImage seuillageImage = createImage(img.width, img.height, RGB);
+	
+	// On parcourt l'image
+	for (int x = 0; x < img.width; x++) {
+		for (int y = 0; y < img.height; y++) {
+			
+			// On recupere la couleur de l'image d'origine
+			int c = img.get(x, y);
+			
+			// On recupere les composantes RVB de la couleur
+			float r = red(c);
+			float g = green(c);
+			float b = blue(c);
+			
+			// On calcule la moyenne des composantes RVB
+			float moyenne = (r + g + b) / 3;
+			
+			// On cree une couleur avec la moyenne des composantes RVB
+			int c2;
+			if (moyenne > seuil) {
+				c2 = color(255, 255, 255);
+			} else {
+				c2 = color(0, 0, 0);
+			}
+			
+			// On affecte la couleur a l'image en noir et blanc
+			seuillageImage.set(x, y, c2);
+		}
+	}
+	
+	// On retourne l'image en noir et blanc
+	return seuillageImage;
+}
+
+
+PImage convolution(PImage img, float[][] filter) {
+	
+	// On cree une image de meme taille que l'image d'origine
+	PImage convolutionImage = createImage(img.width, img.height, RGB);
+	
+	// On calcule la convolution à partir de la matrice
+	for (int x = filter.length / 2; x < img.width - filter.length / 2; x++) {
+		for (int y = filter[0].length / 2; y < img.height - filter[0].length / 2; y++) {
+
+			int norme = 0;
+
+			for (int i = 0; i < filter.length; i++) {
+				for (int j = 0; j < filter[i].length; j++) {
+					int c = img.get(x + i - filter.length / 2, y + j - filter[i].length / 2);
+					float r = red(c);
+					float g = green(c);
+					float b = blue(c);
+					float moyenne = (r + g + b) / 3;
+					norme += moyenne * filter[i][j];
+				}
+			}
+
+			norme = abs(norme);
+
+			// On cree une couleur avec la moyenne des composantes RVB
+			int c2 = color(norme, norme, norme);
+
+			// On affecte la couleur a l'image en noir et blanc
+			convolutionImage.set(x, y, c2);
+
+		}
+	}
+	
+	// On retourne l'image en noir et blanc
+	return convolutionImage;
+}
+
+// Fonction qui convertit une image en noir et blanc
+PImage convertToBNW(PImage img) {
+	
+	// On cree une image de meme taille que l'image d'origine
+	PImage bnwImage = createImage(img.width, img.height, RGB);
+	
+	// On parcourt l'image
+	for (int x = 0; x < img.width; x++) {
+		for (int y = 0; y < img.height; y++) {
+			
+			// On recupere la couleur de l'image d'origine
+			int c = img.get(x, y);
+			
+			// On recupere les composantes RVB de la couleur
+			float r = red(c);
+			float g = green(c);
+			float b = blue(c);
+			
+			// On calcule la moyenne des composantes RVB
+			float moyenne = (r + g + b) / 3;
+			
+			// On cree une couleur avec la moyenne des composantes RVB
+			int c2 = color(moyenne, moyenne, moyenne);
+			
+			// On affecte la couleur a l'image en noir et blanc
+			bnwImage.set(x, y, c2);
+		}
+	}
+	
+	// On retourne l'image en noir et blanc
+	return bnwImage;
+}
\ No newline at end of file
diff --git a/Realite Virtuelle/Exos/2023-03-22/contours/data/harold.jpeg b/Realite Virtuelle/Exos/2023-03-22/contours/data/harold.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..363509b7d4d820307f480908034ead4490c7ae0c
GIT binary patch
literal 14383
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

literal 0
HcmV?d00001

-- 
GitLab