-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathface-to-webserver.js
49 lines (36 loc) · 1.11 KB
/
face-to-webserver.js
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
arDrone = require('/Users/mh/nodejs/lib/node_modules/ar-drone');
cv=require('/Users/mh/nodejs/lib/node_modules/opencv')
fs=require('fs')
http = require('http');
var pngStream = arDrone.createPngStream();
var lastPng;
var facePng;
pngStream
.on('error', console.log)
.on('data', function(pngBuffer) {
lastPng = pngBuffer;
});
var server = http.createServer(function(req, res) {
if (!lastPng) {
res.writeHead(503);
res.end('Did not receive any png data yet.');
return;
}
res.writeHead(200, {'Content-Type': 'image/png'});
fs.writeFile('/tmp/fakeface.png', lastPng, function(error) {
cv.readImage('/tmp/fakeface.png', function(err, im){
im.detectObject("/Users/mh/nodejs/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml", {}, function(err, faces){
for (var i=0;i<faces.length; i++){
var x = faces[i]
im.ellipse(x.x + x.width/2, x.y + x.height/2, x.width/2, x.height/2);
}
facePng = im;
im.save('/tmp/foundface.png');
});
});
});
res.end(lastPng);
});
server.listen(8080, function() {
console.log('Serving latest png on port 8080 ...');
});