不用Emgu CV,用opencv
时间: 2023-07-24 18:30:35 浏览: 226
使用C#和OpenCV实现打开摄像头并在PictureBox中显示,可以使用OpenCVSharp库来实现。下面是一个示例代码:
```csharp
using OpenCvSharp;
private VideoCapture _capture;
private Mat _frame;
private bool _captureInProgress;
private void ProcessFrame(object sender, EventArgs arg)
{
_capture.Retrieve(_frame, 0);
if (!_frame.Empty())
{
pictureBox1.Image = BitmapConverter.ToBitmap(_frame);
}
}
private void button1_Click(object sender, EventArgs e)
{
if (_capture == null)
{
_capture = new VideoCapture(0);
_frame = new Mat();
}
if (!_captureInProgress)
{
_captureInProgress = true;
Application.Idle += ProcessFrame;
}
}
private void button2_Click(object sender, EventArgs e)
{
if (_captureInProgress)
{
_captureInProgress = false;
Application.Idle -= ProcessFrame;
}
if (_capture != null)
{
_capture.Dispose();
_capture = null;
_frame.Dispose();
_frame = null;
}
}
```
在上述代码中,我们首先定义了一个VideoCapture对象来打开摄像头,然后我们定义了一个ProcessFrame方法来处理每一帧图像,将其转换为Bitmap格式的图像,然后在PictureBox中显示。然后我们定义了一个button1_Click方法来启动摄像头,并且定义了一个button2_Click方法来停止摄像头。当我们点击button1按钮时,我们创建了_capture对象,并注册了ProcessFrame方法来处理每一帧图像。当我们点击button2按钮时,我们停止了摄像头的捕获,并释放了_capture对象的资源。
阅读全文