首页 新闻 会员 周边

关于C# picturebox 展示视频的问题

0
悬赏园豆:10 [已解决问题] 解决于 2017-11-17 13:38

最近在做一个有关人脸识别的项目 . 读取摄像头的视频 是用 emgucv , 我想用picturebox 来显示摄像头的视频, 我是 用一个死循环, 截取画面,然后赋值给picturebox . 这样是 可以显示出摄像头的内容了,但是运行一会儿程序就会报错,说写入受保护的内存,网上查了下, 好像是说 picturebox.image = Bitmap ; 的时候,有个 画笔的资源没有释放,这样导致的错误.我对这块不是很明白,谁能给我解释下,这个要怎么去释放. 下面放上部分代码 

private void start()
{
cp = new Capture(0);   
                cp.Start();  //开启默认摄像头
                th = new Thread(zs); // 创建线程,用于循环截取摄像头画面,给picturebox
                th.IsBackground = true;
                th.Start();
}
    private void zs()
        {
            z s = delegate()
            {
                try
                {

                        Mat m = cp.QueryFrame(); //获取截图
                        pictureBox2.Image = m.Bitmap;  //赋值,展示
                }
                catch (Exception e)
                {

                    pictureBox2.Image = null;
                    // MessageBox.Show(e.Message);
                }

            };

            while (bl)
            {
                try
                {
                    Thread.Sleep(1);
                    this.Invoke(s);
                }
                catch (Exception e)
                {
                    //  MessageBox.Show(e.Message);
                }

            }
        }
百鸟朝凤的主页 百鸟朝凤 | 菜鸟二级 | 园豆:260
提问于:2017-09-02 17:16
< >
分享
最佳答案
0

你这样是治标不治本,一:你购买的摄像头如果有相关的sdk就最好了,会自带显示控件或者用panle做显示控件,如果没有的话也有通用的取像的dll,但不管哪样好像都不是放在picture里的吧

收获园豆:10
jqw2009 | 老鸟四级 |园豆:2439 | 2017-09-04 11:13

是有对应的控件,但是我连接的什么样的摄像头都有....我想用同一个控件兼容有所的摄像头

百鸟朝凤 | 园豆:260 (菜鸟二级) | 2017-09-04 14:29

@百鸟朝凤: AForge.NET 用这个通用的

jqw2009 | 园豆:2439 (老鸟四级) | 2017-09-04 15:37

@jqw2009: 还有海康和大有的网络摄像头....

百鸟朝凤 | 园豆:260 (菜鸟二级) | 2017-09-05 10:07
其他回答(1)
0

Finally 里加个释放试试

MasPeter | 园豆:202 (菜鸟二级) | 2017-09-03 08:16

释放bitmap?如果释放的话,我还需要他显示呢...释放了就显示不了画面了

支持(0) 反对(0) 百鸟朝凤 | 园豆:260 (菜鸟二级) | 2017-09-04 14:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册