TOP

Asp.net+WebSocket+Emgucv实时人脸识别(二)
2017-10-10 12:47:31 】 浏览:12685次 本网站的内容取自网络,仅供学习参考之用,绝无侵犯任何人知识产权之意。如有侵犯请您及时与本人取得联系,万分感谢。
Tags:Asp.net WebSocket Emgucv 实时 人脸 识别

,0,0.0)'; ctx2.lineWidth = 2; //设置字体样式 ctx2.font = "30px Courier New"; //设置字体填充颜色 ctx2.fillStyle = "red"; //ctx2.clearRect(0, 0, 320, 240); if (pArr == "[]") { return; } var obj = $.parseJSON(pArr); for (var i = 0, l = obj.length; i < l; i++) { var left = obj[i].X; //左上角x坐标 var top = obj[i].Y;//左上角y坐标 var width = obj[i].W; // var height = obj[i].H;// var name = obj[i].N;//姓名 //画方框 ctx2.moveTo(left, top); ctx2.lineTo(left + width, top); ctx2.lineTo(left + width, top + height); ctx2.lineTo(left, top + height); ctx2.lineTo(left, top); ctx2.stroke(); //从坐标点(50,50)开始绘制姓名 ctx2.fillText(name, left - 30, top - 30); } }; var startWS = function () { var ws = new WebSocket("ws://119.23.237.231:8082/Handler/GetFacePosition.ashx"); ws.onopen = function () { console.log('Opened WS!'); }; ws.onmessage = function (msg) { _draw(msg.data); canSend = true; //记录每次连接的时间 //var timestamp = new Date().getTime(); //console.log("end=" + timestamp); }; ws.onclose = function (msg) { console.log('socket close!'); }; var timer = setInterval(function () { ctx.drawImage(video, 0, 0, 320, 240); if (ws.readyState == WebSocket.OPEN && canSend) { canSend = false; var data = canvas.get()[0].toDataURL('image/jpeg', 0.5), //把画布转base64 压缩比例0.5 newblob = dataURItoBlob(data); ws.send(newblob); //ws.send("123"); } }, 60); }; });

              function dataURItoBlob(dataURI) {
                  var byteString = atob(dataURI.split(',')[1]),
                  mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0],
                  ab = new ArrayBuffer(byteString.length),
                  ia = new Uint8Array(ab);
                  for (var i = 0; i < byteString.length; i++) {
                               ia[i] = byteString.charCodeAt(i);
                            }
                   return new Blob([ab], { type: mimeString });
                  }

 

     前端大概就这样子了,发送数据,接收数据,画图。仔细看一下,挺简单的。

二.服务端实现

     服务端相对要复杂点了,我就大致讲一下怎么处理的,说说遇到的一些坑,详细的实现看源码就行了。 

    我用的asp.net MVC,需要引用emgucv的一些dll,Emgu.CV.UI,Emgu.CV.World,ZedGraph  ,这些在下载的emgucv中bin目录下都能找到,找不到就是版本下载错了。

     首先当然是接收数据,用ashx实现的,rootPath是根目录路径,到时候需要把人脸样本(也就是你录入的脸的图像)文件夹放在项目根目录,还有一个人脸分类器的xml文件,也放在根目录。在调用emgucv的方法时会用到。

        private static string rootPath;
        private int _maxBufferSize = 256 * 1024;

        public void ProcessRequest(HttpContext context)
        {

            if (context.IsWebSocketRequest)
            {
                rootPath = context.Request.PhysicalApplicationPath;

                context.AcceptWebSocketRequest(ProcessWSChat);
            }
        }

接着是实现websocket的代码,我就不多说了,还是搬代码:

private async Task ProcessWSChat(AspNetWebSocketContext context)
        {
            try
            {
                WebSocket socket = context.WebSocket;


                byte[] receiveBuffer = new byte[_maxBufferSize];
                Arr  
		

请关注公众号获取更多资料


Asp.net+WebSocket+Emgucv实时人脸识别(二) https://www.cppentry.com/bencandy.php?fid=106&id=131550

首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇UWP 手绘视频创作工具技术分享系列 下一篇UWP 手绘视频创作工具技术分享系..

评论

验 证 码:
表  情:
内  容: