bonsoir,
svp je veux connaitre le nombre de points d'une graphe dans un canvas java
puis leurs coordonnées
![]()
bonsoir,
svp je veux connaitre le nombre de points d'une graphe dans un canvas java
puis leurs coordonnées
![]()
Salut,
Vu le peu de réponses sur ton post identique précédent, je doute que tu en aies plus sur celui-ci.
Surtout sans plus de précisions...
Soit tu connais les points de ton graphe et la question ne se pose pas...
Soit tu ne les connais pas et il va falloir jouer avec de l'analyse d'image...
merci,
l'image que j'ai, c'est une courbe et je veut analysé donc connaitre les coordonnées des points
![]()
c'est le code de la méthode que j'ai pour la représentation du forme d'onde d'un signal (.wav) ça fonctionne mais suis bloqué dans la représentation du spectre d'amplitude
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
59
60
61
62
63
64
65
66
67
68
69
70
71 public void createFormeDonde(byte[] audioBytes) { lines.removeAllElements(); // clear the old vector AudioFormat format = audioInputStream.getFormat(); if (audioBytes == null) { try { audioBytes = new byte[ (int) (audioInputStream.getFrameLength() * format.getFrameSize())]; audioInputStream.read(audioBytes); } catch (Exception ex) { } } Dimension d = getSize(); int w = d.width; int h = d.height-15; int[] audioData = null; if (format.getSampleSizeInBits() == 16) { int nlengthInSamples = audioBytes.length / 2; audioData = new int[nlengthInSamples]; if (format.isBigEndian()) { for (int i = 0; i < nlengthInSamples; i++) { // First byte is MSB (high order) int MSB = (int) audioBytes[2*i]; //* Second byte is LSB (low order) int LSB = (int) audioBytes[2*i+1]; audioData[i] = MSB << 8 | (255 & LSB); } } else { for (int i = 0; i < nlengthInSamples; i++) { //* First byte is LSB (low order) int LSB = (int) audioBytes[2*i]; // Second byte is MSB (high order) int MSB = (int) audioBytes[2*i+1]; audioData[i] = MSB << 8 | (255 & LSB); } } } int frames_per_pixel = audioBytes.length/10 / format.getFrameSize()/w; byte my_byte = 0; double y_last = 0; double y_pose = 0; int numChannels = format.getChannels(); for (double x = 0; x < w && audioData != null; x++) { int idx = (int) (frames_per_pixel * numChannels * x); if (format.getSampleSizeInBits() == 8) { my_byte = (byte) audioData[idx]; } else { my_byte = (byte) (128 * audioData[idx] / 22768 ); } double y_new = (double) (h * (128 - my_byte) / 256); lines.add(new Line2D.Double(x, y_last, x, y_new)); y_last = y_new; } repaint(); }![]()
bonjour.
j'ai pas une idée sur la forme de ton spectre mais je suppose que les points
que tu cherche sont ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 lines.add(new Line2D.Double(x, y_last, x, y_new));
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
+1
et en addition, je présume que les valeurs que tu cherches à récupérer depuis trois mois sont là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part byte[] audioBytes
bonsoir,
merci pour l'indice mais j'ai pas bien trouver la solution pour extraire les valeurs des coordonnées des points pour faire le calcul du spectre![]()
salut.
si tu arrive à Sélectionner tes points effectives à partir de cette ligne
ou bien de ce que t'as proposé plegat, tu peut utiliser un objet collection pour enregistrer tes objets Point(x,y)
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Partager