赞
踩
目录
using OpenCvSharp;
using OpenCvSharp.Extensions;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OpenCvSharp_读取rtsp流
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
CancellationTokenSource cts;
VideoCapture capture;
private void button1_Click(object sender, EventArgs e)
{
if (textBoxIP.Text == "" || textBoxPort.Text == "" ||
textBoxUserName.Text == "" || textBoxPassword.Text == "")
{
MessageBox.Show("Please input IP, Port, User name and Password!");
return;
}
String rtspUrl = string.Format("rtsp://{0}:{1}@{2}:{3}"
, textBoxUserName.Text
, textBoxPassword.Text
, textBoxIP.Text
, textBoxPort.Text
);
button1.Enabled = false;
button2.Enabled = true;
cts = new CancellationTokenSource();
Task task = new Task(() =>
{
capture.Open(rtspUrl, VideoCaptureAPIs.ANY);
if (capture.IsOpened())
{
//var dsize = new System.Windows.Size(capture.FrameWidth, capture.FrameHeight);
Mat frame = new Mat();
while (true)
{
Thread.Sleep(10);
//判断是否被取消;
if (cts.Token.IsCancellationRequested)
{
pictureBox1.Image = null;
return;
}
//Read image
capture.Read(frame);
if (frame.Empty())
continue;
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
}
pictureBox1.Image = BitmapConverter.ToBitmap(frame);
}
}
}, cts.Token);
task.Start();
}
private void Form1_Load(object sender, EventArgs e)
{
capture = new VideoCapture();
}
private void button2_Click(object sender, EventArgs e)
{
button2.Enabled = false;
button1.Enabled = true;
cts.Cancel();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (capture != null)
{
capture.Release();
capture.Dispose();
}
}
}
}
- using OpenCvSharp;
- using OpenCvSharp.Extensions;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
-
- namespace OpenCvSharp_读取rtsp流
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
-
- CancellationTokenSource cts;
- VideoCapture capture;
-
- private void button1_Click(object sender, EventArgs e)
- {
- if (textBoxIP.Text == "" || textBoxPort.Text == "" ||
- textBoxUserName.Text == "" || textBoxPassword.Text == "")
- {
- MessageBox.Show("Please input IP, Port, User name and Password!");
- return;
- }
-
- String rtspUrl = string.Format("rtsp://{0}:{1}@{2}:{3}"
- , textBoxUserName.Text
- , textBoxPassword.Text
- , textBoxIP.Text
- , textBoxPort.Text
- );
-
- button1.Enabled = false;
- button2.Enabled = true;
-
- cts = new CancellationTokenSource();
- Task task = new Task(() =>
- {
- capture.Open(rtspUrl, VideoCaptureAPIs.ANY);
- if (capture.IsOpened())
- {
- //var dsize = new System.Windows.Size(capture.FrameWidth, capture.FrameHeight);
- Mat frame = new Mat();
- while (true)
- {
- Thread.Sleep(10);
- //判断是否被取消;
- if (cts.Token.IsCancellationRequested)
- {
- pictureBox1.Image = null;
- return;
- }
- //Read image
- capture.Read(frame);
- if (frame.Empty())
- continue;
-
- if (pictureBox1.Image != null)
- {
- pictureBox1.Image.Dispose();
- }
- pictureBox1.Image = BitmapConverter.ToBitmap(frame);
- }
- }
-
- }, cts.Token);
- task.Start();
- }
-
- private void Form1_Load(object sender, EventArgs e)
- {
- capture = new VideoCapture();
- }
-
- private void button2_Click(object sender, EventArgs e)
- {
- button2.Enabled = false;
- button1.Enabled = true;
- cts.Cancel();
-
- }
-
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (capture != null)
- {
- capture.Release();
- capture.Dispose();
- }
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。