物联网浏览器(IoTBrowser)-人脸快速搜索
起因
最近遇到一个人脸搜索的需求,驿站的快递被人误领,拿走几天还没有送回来,所以想从出库仪中找历史出库记录的想法。
实现思路:
1.从雷现出库仪上拷贝文件下来。(拷贝几十万张人脸数据花了不少时间)
2.开发人脸搜索工具
3.搜索比对(如果能找到历史数据,就能找到人)
这里主要是开发人脸搜索工具,需要实现识别图片里面是否包含人脸、人脸匹配检测等功能,网速找了一款工具,但是需要改造3点:
1.支持并发搜索,充分利用多核CPU,从几十万张图片中快速检索到想要找的人。
2.支持参数配置,支持指定图片和查找目录、搜索第一张还是全部、找到后是否打开等参数。
3.开发UI配置界面,由于工具是控制台应用,使用起来不方便,所以需要一个UI界面。

使用IoTBrowser做为UI前端,使用少量的代码既可实现。

核心代码:
<div id="vue_root" class="fun_bd" style="padding:10px;">
<form class="am-form">
<fieldset>
<div class="am-form-group">
<label for="doc-ipt-email-1" class="am-u-sm-1">原始文件</label>
<div class="am-u-sm-3">
<input type="text" v-model="config.ImagePath" style="width: 75%;display: inline;" />
<input type="button" @click="selectFile()" value="选择" />
</div>
<label for="doc-ipt-email-1" class="am-u-sm-1">查找目录</label>
<div class="am-u-sm-3">
<input type="text" v-model="config.FindDir" style="width: 75%;display: inline;" />
<input type="button" value="选择" @click="selectSaveDir()" />
</div>
<label for="doc-ipt-email-1" class="am-u-sm-1">历史文件</label>
<div class="am-u-sm-3">
<input type="text" v-model="config.HistoryFileName" style="width: 75%;display: inline;" />
</div>
</div>
<div class="am-form-group">
<div class="am-u-sm-3">
<input id="ClearHistory" type="checkbox" v-model="config.ClearHistory" />
<label for="ClearHistory" class="">清理历史数据</label>
</div>
<div class="am-u-sm-3">
<input id="FindFirstStop" type="checkbox" v-model="config.FindFirstStop" />
<label for="FindFirstStop" class="">找到第一张停止</label>
</div>
<div class="am-u-sm-3">
<input id="FindOpen" type="checkbox" v-model="config.FindOpen" />
<label for="FindOpen" class="">找到后立即打开</label>
</div>
<div class="am-u-sm-3">
<!--<button onclick="startFace()" class="am-btn-primary" type="button">打开连接</button>-->
<button @click="find()" v-if="!isFind" class="am-btn-primary" type="button">开始查询</button>
<button @click="stop()" v-if="isFind" class="am-btn-primary" type="button">停止服务</button>
</div>
</div>
<div class="am-form-group">
<textarea id="txtInfo" rows="40">{{msg}}</textarea>
</div>
</fieldset>
</form>
</div>
<script>
var hostid;// 主机id
function startFace() {
dds.iot.com.open({
type: 'FaceCom',//人脸识别插件
port: 1,
baudRate: 1,
onReceive: function (res) {
if ($vue.isFind) {
if (res.data.indexOf('已找到:') == 0) {
alert(res.data)
}
addMsg(res.data)
}
//console.log('host', res.data)
},
onOpen: function (ar) {
if (ar.Success) {
hostid = ar.Data;
addMsg('连接成功!')
} else {
alert(ar.Message)
}
}
})
}
var $msg;
function addMsg(msg) {
var m = $vue.msg + "\n" + msg;
if ($vue.msg.length > 10000) {
$vue.msg = (msg);
} else {
$vue.msg = (m);
}
}
// 窗口初始化事件(操作窗口大小、标题)
$(document).bind('dds.window.init', function (e, win) {
$msg = $('#txtInfo')
startFace();
initVue();
})
var $vue;
function initVue() {
$vue = new Vue({
el: '#vue_root',
data: {
advanceSetting: false,
msg: "",
isFind:false,
config: {
ImagePath: "",
FindDir: "D:\\image",
HistoryFileName: "",
ClearHistory: true,
FindOpen: true,
FindFirstStop: true,
},
},
mounted() {
if (localStorage._faceConfig) {
this.config=JSON.parse(localStorage._faceConfig);
}
},
methods: {
selectFile() {
this.config.ImagePath = _host.selectFile();
},
find() {
var config = this.config
if (!config.ImagePath) {
alert('请选择原始文件')
return;
}
this.msg = ''
if (!config.FindDir) {
alert('请选择查找目录')
return;
}
this.isFind = true;
dds.iot.com.exeCommand({ id: hostid, name: "Find", data: { timeout1: 30000, config } }, function (ar) {
if (ar.Success) {
} else {
addMsg('操作失败:' + ar.Message)
}
})
localStorage._faceConfig = JSON.stringify(config);
},
stop() {
this.isFind = false;
dds.iot.com.exeCommand({ id: hostid, name: "Stop", data: { } }, function (ar) {
if (ar.Success) {
} else {
addMsg('操作失败:' + ar.Message)
}
})
},
clearLog() {
this.msg=''
},selectSaveDir() {
var dir = dds.file.openFolderDialog();
this.config.FindDir=(dir)
}
}
})
}
</script>
系统支持:
1.人脸数量检测、人脸匹配、人脸定位
2.多文件夹快速搜索,搜索一张还是全部
3.多线程并发搜索,快速查找人脸数据
使用简单的HTMl+WebAPI就可以实现人脸识别,将控制台的输出内容通过WebSocket实时推送到前端界面。
作者:木子清
联系方式:微信 billy_yi QQ: 909501683 多年.NET平台开发经验,擅长物联网各类设备(地磅、轨道秤、RFID等)集成开发。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
浙公网安备 33010602011771号