從網(wǎng)頁(yè)上控制無(wú)人機(jī)飛行
為無(wú)人機(jī)開(kāi)發(fā)一個(gè)基于網(wǎng)頁(yè)的控制頁(yè)面挺簡(jiǎn)單且效果不錯(cuò)。用如下所示的express.js框架就可以搭建一個(gè)很小巧的網(wǎng)頁(yè)服務(wù)器。
var express = require(‘express’);
app.get(‘/’, function (req, res) {
res.sendFile(path.join(__dirname + ‘/index.html’));
});
app.get(‘/land’, function(req, res) {
client.land();
});
app.get(‘/takeoff’, function(req, res) {
client.takeoff();
});
app.listen(3000, function () {
});
我用下面的代碼來(lái)通過(guò)一個(gè)按鈕發(fā)送AJAX請(qǐng)求。
<html>
<script language=’javascript’>
function call(name) {
var xhr = new XMLHttpRequest();
xhr.open(‘GET’, name, true);
xhr.send();
}
</script>
<body>
<a”call(‘takeoff’);”>Takeoff</a>
<a”call(‘land’);”>Land</a>
</body>
</html>
從無(wú)人機(jī)上導(dǎo)出視頻流
我發(fā)現(xiàn)把無(wú)人機(jī)上的攝像頭拍攝的視頻導(dǎo)出的最佳方法就是:建立一個(gè)持續(xù)的連接,并把攝像頭拍攝的PNG圖片發(fā)送到我的網(wǎng)站的網(wǎng)頁(yè)上。通過(guò)使用AR無(wú)人機(jī)的庫(kù)(見(jiàn)下面的代碼),網(wǎng)頁(yè)服務(wù)器不斷地把無(wú)人機(jī)攝像頭拍攝的PNG畫面拉取出來(lái)。
var pngStream = client.getPngStream();
pngStream
.on(‘error’, console.log)
.on(‘data’, function(pngBuffer) {
sendPng(pngBuffer);
}
function sendPng(buffer) {
res.write(‘–daboundary\nContent-Type: image/png\nContent-length: ‘ + buff
er.length + ‘\n\n’);
res.write(buffer);
});
對(duì)從無(wú)人機(jī)獲取的圖像進(jìn)行人臉識(shí)別
微軟的Azure Face API系統(tǒng)很容易上手,且功能強(qiáng)大。你上傳你朋友的照片給它,這個(gè)系統(tǒng)就能識(shí)別出他們是誰(shuí)。它也能猜測(cè)人物的年齡和性別。我發(fā)現(xiàn)這兩個(gè)功能的識(shí)別準(zhǔn)確率是驚人的高。整個(gè)識(shí)別的延遲大概是200毫秒。識(shí)別1000次請(qǐng)求花費(fèi)1.5美元。對(duì)我而言,這個(gè)價(jià)格對(duì)于這種應(yīng)用是相當(dāng)合理的。下面是我的代碼,它實(shí)現(xiàn)了發(fā)送圖片給API來(lái)做人臉識(shí)別的功能。
var oxford = require(‘project-oxford’),
oxc = new oxford.Client(CLIENT_KEY);
loadFaces = function() {
chris_url = “https://media.licdn.com/mpr/mpr/shrinknp_400_400/AAEAAQAAAAAAAALyAAAAJGMyNmIzNWM0LTA5MTYtNDU4Mi05YjExLTgyMzVlMTZjYjEwYw.jpg”;
lukas_url = “https://media.licdn.com/mpr/mpr/shrinknp_400_400/p/3/000/058/147/34969d0.jpg”;
oxc.face.faceList.create(‘myFaces’);
oxc.face.faceList.addFace(‘myFaces’, {url => chris_url, name=> ‘Chris’});
oxc.face.faceList.addFace(‘myFaces’, {url => lukas_url, name=> ‘Lukas’});
}
oxc.face.detect({
path: ‘camera.png’,
analyzesAge: true,
analyzesGender: true
}).then(function (response) {
if (response.length > 0) {
drawFaces(response, filename)
}
});
我用了ImageMagick庫(kù)來(lái)對(duì)我收集的PNG圖片做打標(biāo)簽,效果相當(dāng)好。對(duì)于這個(gè)部分其實(shí)可以有很多的擴(kuò)展可能。比如用一個(gè)情感API來(lái)識(shí)別人臉?biāo)憩F(xiàn)出來(lái)的情感。
?
免責(zé)聲明:凡注明來(lái)源全球無(wú)人機(jī)網(wǎng)的所有作品,均為本網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,歡迎轉(zhuǎn)載,請(qǐng)注明出處。非本網(wǎng)作品均來(lái)自互聯(lián)網(wǎng),轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。