小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 16334|回复: 11

windows phone 实现mjpeg流人脸识别

[复制链接]
发表于 2012-12-16 19:48:57 | 显示全部楼层 |阅读模式
本帖最后由 Coos 于 2012-12-16 19:54 编辑

先上图看效果:
face.jpg

首先是wp有自带的mjpeg解码功能
能输出WriteableBitmap格式,方便接下来进行图像分析
速度还行,最大也只是100多MS的延迟
接收图像方法
public void recVideo()
        {
            string sourceURL = "图片流地址";
            while (true)
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(sourceURL));
                req.BeginGetResponse(new AsyncCallback(resResult), req);
                //Thread.Sleep(10);
            }
        }
异步调用方法
      private void resResult(IAsyncResult ir)
        {
            try
            {
                HttpWebRequest req = ir.AsyncState as HttpWebRequest;
                WebResponse resp = req.EndGetResponse(ir);
                Stream stream = resp.GetResponseStream();
                Dispatcher.BeginInvoke(() =>
                {
                    WriteableBitmap myBitmap = PictureDecoder.DecodeJpeg(stream);    这里就是自带的解码方法,一句话就行了,如果只要实现视频输出,下面图像识别就可以删掉了
                    image1.Source = myBitmap;
                    #region 图像识别
                    var w = myBitmap.PixelWidth;
                    var h = myBitmap.PixelHeight;
                    if (_pixelDataGray == null || _pixelDataGray.Length != h * w)
                    {
//定义了几个数组
                        _pixelDataGray = new byte[w / _downsampleFactor * h / _downsampleFactor];
                        _pixelDataDownsampled =
                            new byte[w / _downsampleFactor * h / _downsampleFactor];
                        _pixelDataGrayInt = new int[w / _downsampleFactor * h / _downsampleFactor];
                        _wb = new WriteableBitmap(w / _downsampleFactor, w / _downsampleFactor);
                    }
//另外写了几个类。Utils 和 FaceDetection,其中FaceDetection的检测算法是跟opencv学的
                    Utils.DownSample(myBitmap.Pixels, w, h, ref _pixelDataGrayInt, _downsampleFactor);
                    Utils.ARGBToGreyScale(_pixelDataGrayInt, ref _pixelDataGray);
                    //_pixelDataGray = e.FrameBuffer;
                    Utils.HistogramEqualization(ref _pixelDataGray);
                    Utils.GrayToARGB(_pixelDataGray, ref _pixelDataGrayInt);
                    List<FaceDetection.Rectangle> faces =
                        _detector.getFaces(
                        _pixelDataGrayInt,
                        w / _downsampleFactor,
                        h / _downsampleFactor,
                        2f, 1.25f, 0.1f, 1, false, true);
                    _pixelDataGrayInt.CopyTo(_wb.Pixels, 0);
                    _wb.Invalidate();
//image控件上覆盖了个 canvas控件,用来画圆圈
                    cnvsFaceRegions.Children.Clear();
                    foreach (var r in faces)
                    {
                        Ellipse el = new Ellipse();
                        TranslateTransform loc = new TranslateTransform();
                        loc.X = r.X * _downsampleFactor / (double)w * cnvsFaceRegions.Width;
                        loc.Y = r.Y * _downsampleFactor / (double)w * cnvsFaceRegions.Height;
                        el.RenderTransform = loc;
                        el.Width = r.Width * _downsampleFactor *2;
                        el.Height = r.Height * _downsampleFactor *2;
                        el.Stroke = new SolidColorBrush(Colors.Red);
                        cnvsFaceRegions.Children.Add(el);
                    }
                    #endregion
                });
            }
            catch (Exception ex)
            {
                Dispatcher.BeginInvoke(() => sysInfo.Text = ex.Message);
            }
        }

相关类:
ryancar.zip (7.76 KB, 下载次数: 59)

点评

wp8 手机能使用哇 期待楼主wp8的  发表于 2013-4-1 19:27

评分

参与人数 3金钱 +7 收起 理由
oatoner + 3 很给力!
81540099 + 2 很给力!
liuviking + 2 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-12-16 20:45:47 | 显示全部楼层
强 顶起              
回复 支持 反对

使用道具 举报

发表于 2012-12-16 20:55:54 | 显示全部楼层
{:2_37:}楼主厉害
回复 支持 反对

使用道具 举报

发表于 2012-12-16 23:17:26 | 显示全部楼层
只能用在手机手机上面么?、能有PC的不?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-16 23:30:29 | 显示全部楼层
ttzaio 发表于 2012-12-16 23:17
只能用在手机手机上面么?、能有PC的不?

pc早就有了,呵呵
回复 支持 反对

使用道具 举报

发表于 2012-12-17 12:02:04 | 显示全部楼层
顶起来。。。
回复 支持 反对

使用道具 举报

发表于 2012-12-17 15:42:55 | 显示全部楼层
强 顶起 {:2_38:}
回复 支持 反对

使用道具 举报

发表于 2012-12-17 19:26:04 | 显示全部楼层
不错,强势围观
回复 支持 反对

使用道具 举报

发表于 2012-12-17 22:44:06 | 显示全部楼层
很强 不过没WP用,只有围观
回复 支持 反对

使用道具 举报

发表于 2012-12-17 23:45:24 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-23 04:40 , Processed in 1.097068 second(s), 22 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表