using Emgu.CV;

using System;

using System.Drawing;

using System.Threading;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        Emgu.CV.Capture cap;

        public Form1()

        {

            InitializeComponent();

            //cap = new Emgu.CV.Capture("F:\\test.avi");

            cap = new Emgu.CV.Capture("rtsp://192.168.1.6.............");

            cap.ImageGrabbed += capture_ImageGrabbed;

            cap.Start();

        }

        private delegate void SetPicVideo(Bitmap val);//跨线程修改图片框

        private object lockObj = new object();

        private Thread SetPicVideoThread;

        Bitmap bmpVideo = null;

        private void capture_ImageGrabbed(object sender, EventArgs e)

        {

            try

            {

                Mat frame = new Mat();

                //lock (lockObj)

                {

                    if (cap != null)

                    {

                        if (!cap.Retrieve(frame))

                        {

                            frame.Dispose();

                            return;

                        }

                        if (frame.IsEmpty)

                            return;

                        bmpVideo =  frame.Bitmap;

                        SetPicVideoThread = new Thread(new ThreadStart(setPicVideo));

                        SetPicVideoThread.IsBackground = true;

                        SetPicVideoThread.Start();

                    }

                }

                //frame.Dispose();

            }

            catch (Exception ex)

            {

            }

        }

        void SetPic(Bitmap val)

        {

            if (val != null)

            {

                this.pictureBox1.Image = val;

            }

        }

        private void setPicVideo()

        {

            if (pictureBox1.InvokeRequired)

            {

                SetPicVideo d = new SetPicVideo(SetPic);

                object[] arg = new object[] { bmpVideo };//要传入的参数值

                this.Invoke(d, arg);

            }

            else

            {

                SetPic(bmpVideo);

            }

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            cap.Stop();

        }

    }

}

Emgu.CV 播放视频的更多相关文章

  1. Emgu.CV 播放视频-本地文件/RTSP流

    using Emgu.CV; using System; using System.Drawing; using System.Threading; using System.Windows.Form ...

  2. Emgu CV播放视频

    public partial class Form1 : Form {     Capture _capture;     public Form1()     {         Initializ ...

  3. Open CV 播放视频(2)

      演示:读取一个视频,然后播放,ESC退出.   #include "stdafx.h"   #include <opencv2/core/core.hpp>   # ...

  4. 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别

    背景 目前AI 处于风口浪尖,作为 公司的CTO,也作为自己的技术专研,开始了AI之旅,在朋友圈中也咨询 一些大牛对于AI 机器学习框架的看法,目前自己的研究方向主要开源的 AI 库,如:Emgu C ...

  5. Emgu CV 初试

    Emgu CV 是.NET平台下对OpenCV图像处理库的封装,也就是.NET版.可以运行在C#.VB.VC++等. 安装完成后需要设置环境变量,比如我安装在D:\Emgu\emgucv-window ...

  6. EmguCV控件Emgu.CV.UI.ImageBox及C# picturebox显示图片连续刷新出现闪烁问题

    在上一篇里,EmguCV(OpenCV)实现高效显示汉字及叠加  实现了视频叠加及显示,但存在问题,就是 Emgu.CV.UI.ImageBox及C# picturebox显示图片时都会出现闪烁,尤其 ...

  7. OpenCV播放视频带滚动条(3)

      演示 :一个带有滚动条的播放视频的代码.   #include "stdafx.h" #include <opencv2/core/core.hpp> #inclu ...

  8. 基于Emgu CV 的手势识别实现PPT的控制放映

    Emgu CV 简介         众所周知,Emgu CV是.NET平台下对OpenCV图像处理库的封装,也就是.NET版的OpenCV.开发者可以很方便的通过C#,VB等语言调用OpenCV函数 ...

  9. .NET开源工程推荐(Accord,AForge,Emgu CV)

         本人用C#开发了一些项目,下面的开源工程给了我很大的帮助——详细的源代码介绍加丰富的实例运用,是非常不错的学习资源,分享给大家,同时附上我的相关开发项目.    Accord.NET The ...

随机推荐

  1. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

    今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...

  2. Java中怎么切换窗口

    首先,创建一个窗口对象: eg:  JFram frame = JFrame();//创建一个窗体 frame.setVisible(true);//设置窗体可见,默认不可见 然后编写相关应用或组件… ...

  3. java http工具类和HttpUrlConnection上传文件分析

    利用java中的HttpUrlConnection上传文件,我们其实只要知道Http协议上传文件的标准格式.那么就可以用任何一门语言来模拟浏览器上传文件.下面有几篇文章从http协议入手介绍了java ...

  4. strcpy 函数的实现

    原型声明:extern char *strcpy(char *dest,const char *src); 头文件:string.h   功能:把从src地址开始且含有‘\0’结束符的字符串赋值到以d ...

  5. 博客代码美化(SyntaxHighlighter)

    这篇博文主要讲解自己使用SyntaxHighlighter对代码进行美工中遇见的问题以及如何使用SyntaxHighlighter? 首先来看看SyntaxHighlighter对代码美工的效果吧! ...

  6. HashSet和TreeSet

    package com.wzy.list; import java.util.HashSet; import java.util.Iterator; import java.util.Set; imp ...

  7. java内部类

    1.内部类 2.内部类的名字不会单独存在,根据外部类名的存在而存在.内部类的名字可以和外部其他类的名字一样. 3.这个this.num打印的是inner类里面的num 4.在内部类访问外部类成员变量方 ...

  8. scp 上传文件到多个服务器节点

    参考:scp批量上传文件到多台机器上(升级版) 实测,代码可运行. 1.如果遇到syntax error near unexpected token问题,基本是由于windows环境下编写的shell ...

  9. 使用gulp工具生成svgsprites

    简介 SVG即可缩放矢量图形 (Scalable Vector Graphics)的简称, 是一种用来描述二维矢量图形的XML标记语言. SVG图形不依赖于分辨率, 因此图形不会因为放大而显示出明显的 ...

  10. 链接rel属性external、nofollow、external nofollow三种写法的区别

    <script language="javascript" type="text/javascript" src="http://files.c ...