-
Notifications
You must be signed in to change notification settings - Fork 0
/
image2minitel.pde
141 lines (112 loc) · 2.65 KB
/
image2minitel.pde
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//Video2Minitel
//by Renaud, Fabrice & Phil
//Inspired from Video2ledwallHarpSerial V1.0 by Fabrice Fourc
// http://www.tetalab.org
import processing.video.*;
import processing.net.*;
int plage=44;//256;
int MINITEL_CHAR_WIDTH = 40;//*2;
int MINITEL_CHAR_HEIGHT = 24;//*4;
// en fait ce n'est pas vraiment un pixel par pixel char...
int PIXEL_CHAR_WIDTH = 2;
int PIXEL_CHAR_HEIGHT = 3;
// Size of each cell in the grid, ratio of window size to video size
int videoScale = 10;
int videoScalex = 8;
int videoScaley = 6;
// Number of columns and rows in our system
int cols, rows;
// Variable to hold onto Capture object
public int s = 50;
import processing.serial.*;
// The serial port:
Serial myPort;
//luminosite globale de la colone pour le son
int colValue;
String ledCol;
String ledWallMsg;
//Client myClient;
Capture video;
PImage b;
PImage img;
void setup()
{
size(MINITEL_CHAR_WIDTH*PIXEL_CHAR_WIDTH*videoScalex,MINITEL_CHAR_HEIGHT*PIXEL_CHAR_HEIGHT*videoScaley);
frameRate(25);
// List all the available serial ports:
println(Serial.list());
b = loadImage("2000.jpg");
println(Serial.list());
myPort = new Serial(this, "COM18", 1200);
//myClient = new Client(this, "127.0.0.1", 5204);
// Initialize columns and rows
cols = width/videoScalex;
rows = height/videoScaley;
}
//----------------------------------------------------------
void displayPixelChar2(int x, int y)
{
x= x *2;
y = y * 3;
byte carac=0; // caractère pixel
carac+=(Math.pow(2,0))*getG2(x+0,y+0);
carac+=(Math.pow(2,1))*getG2(x+1,y+0);
carac+=(Math.pow(2,2))*getG2(x+0,y+1);
carac+=(Math.pow(2,3))*getG2(x+1,y+1);
carac+=(Math.pow(2,4))*getG2(x+0,y+2);
carac+=(Math.pow(2,5))*1;
carac+=(Math.pow(2,6))*getG2(x+1,y+2);
myPort.write(carac);
println("carac= "+carac);
}
int getG2(int x,int y)
{
println("x + y*video.width" + (x + y*cols));
color c = b.pixels[x + y*(80)];
int value = (int)brightness(c); // get the brightness
println(value);
if (value<s)
{
return(0);
}
else
{
return(1);
}
}
void draw() {
// Read image
b.loadPixels();
image(b, 0, 0);
noStroke();
//loadPixels();
if(!mousePressed) //si je ne clique pas, j'affiche le preview
{
}
else //si je clique sur l'image j'envoie sur le port serie
{
myPort.write(12);
myPort.write(14);
for (int y=0;y<MINITEL_CHAR_HEIGHT;y++)
{
for (int x=0;x<MINITEL_CHAR_WIDTH;x++)
{
displayPixelChar2(x,y);
println("x= "+x+"y= "+y);
}
}
}
}
void keyPressed() //reglage du seuil (a-, z+)
{
if( key == 'a')
{
s = s - 1;
println("s " + s);
}
if ( key == 'z')
{
s = s + 1;
println("s " + s);
}
}