capture的read方法参数不能放emgucv的mat
时间: 2024-03-02 21:53:08 浏览: 102
感谢您的指正,您说得对,Capture类的Read方法不支持直接返回Mat类型。我混淆了VideoCapture类的Read方法和Capture类的QueryFrame方法,造成了错误。
正确的做法是,使用Capture类的RetrieveBgrFrame方法获取Bgr图像,然后将其转换为Mat类型,如下所示:
```csharp
using Emgu.CV;
using Emgu.CV.UI;
using System.Windows.Forms;
namespace Camera
{
public partial class Form1 : Form
{
private Capture _capture;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
_capture = new Capture(0); // 初始化摄像头,设备ID为0
_capture.Start(); // 开始捕获
}
private void timer1_Tick(object sender, EventArgs e)
{
Mat frame = new Mat();
_capture.RetrieveBgrFrame().Mat.CopyTo(frame); // 获取图像
ImageBox1.Image = frame; // 显示图像
}
}
}
```
在这个示例代码中,我们使用了Capture类的RetrieveBgrFrame方法来获取Bgr图像,然后将其转换为Mat类型。注意,我们需要使用Mat的CopyTo方法将Bgr图像复制到新的Mat对象中,因为Bgr图像可能会被重用。最后,我们将Mat对象显示在一个ImageBox控件中。
阅读全文