Bonjour à tous, je suis membre d'un groupe de 5 étudiants en terminale scientifique spécialité sciences de l'ingénieur, nous avons à réaliser le projet suivant avant la fin de l'année : Un club de tir nous a sollicité afin de créer un prototype de lunette de visée pour malvoyant car ce n'est actuellement plus produit et commercialisé. Après plusieurs pistes écartés, voici comment nous voulons procéder : une caméra est placée vers la cible, un laser est placé sur la lunette et dirigé vers la cible, en fonction de l'endroit où se trouve le laser sur la cible un son est émis dans un casque porté par le tireur. Je passe pour les détails techniques qui n'ont pas de rapport avec notre problème.

Voici ce que nous avons fait sur Processing :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import processing.video.*;
 
 
Capture cam;
 
void setup() {
  size(640, 480);
 
 
  String[] cameras = Capture.list();
 
  if (cameras.length == 0) {
    println("There are no cameras available for capture.");
    exit();
  } else {
    println("Available cameras:");
    for (int i = 0; i < cameras.length; i++) {
      println(cameras[i]);
    }
 
    // The camera can be initialized directly using an 
    // element from the array returned by list():
    cam = new Capture(this, cameras[0]);
    cam.start();     
  }      
}
 
void draw() {
  if (cam.available() == true) {
    cam.read();
 
 
  }
  image(cam, 0, 0);
 
  color a = get(100,100);
float c = red(a);
float d = blue(a);
float e = green(a);
 
 
 
println(c);
 
if (c > 230) {
 
println("Rouge détecté");
    }
 
 
//println(couleur_image);
fill(255,255,255); 
ellipse(100, 100, 10, 10);
 
  // The following does the same, and is faster when just drawing the image
  // without any additional resizing, transformations, or tint.
  //set(0, 0, cam);
}
Le programme fonctionne : 1 pixel détecte le rouge du laser, un cercle blanc indique son emplacement pour pouvoir tester le programme.
Ma question est la suivante : comment peut-on détecter le rouge du laser sur tout le champ de la caméra ? Nous avons essayé d'attribuer 5 pixel de plus à chaque fois que l'action a été effectuée, le tout sur chaque ligne du champ mais le tout est beaucoup trop lent. Je précise que nous sommes novices, seul l'un de nous connaît quelques bases en java.

Merci d'avance pour votre aide