zoukankan      html  css  js  c++  java
  • Emgu.CV 播放视频-本地文件/RTSP流

    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();
    
            }
    
        }
    
    }
  • 相关阅读:
    Java多线程_同步工具CountDownLatch
    Java多线程_Semaphore信号量
    Java多线程_ReentrantLock
    Java多线程_CAS算法和ABA问题
    Java多线程_Atomic
    Java多线程_生产者消费者模式2
    Java多线程_生产者消费者模式1
    Java多线程_阻塞队列
    Java多线程_wait/notify/notifyAll方法
    Java多线程同步_synchronized
  • 原文地址:https://www.cnblogs.com/jhlong/p/5433880.html
Copyright © 2011-2022 走看看