使用 Emgu CV 运行相机
Posted
技术标签:
【中文标题】使用 Emgu CV 运行相机【英文标题】:Running the camera using Emgu CV 【发布时间】:2017-12-18 06:59:44 【问题描述】:我想做人脸识别系统。现在,我正在尝试运行相机,但是我很难访问相机。这是我的代码:
public partial class Camera : Form
private Capture capture;
private HaarCascade haarCascade;
Timer timer;
public Camera()
InitializeComponent();
private void pictureBox1_Click(object sender, EventArgs e)
capture = new Capture();
haarCascade = new HaarCascade(@"haarcascade_frontalface_alt_tree.xml");
timer = new Timer();
timer.Tick += new EventHandler(timer1_Tick);
timer.Interval = new TimeSpan(0, 0, 0, 0, 1);
timer.Start();
timer.Interval = new TimeSpan(0, 0, 0, 0, 1);
中有错误。
这是错误:
严重性代码描述项目文件行抑制状态 错误 CS0029 无法将类型“System.TimeSpan”隐式转换为“int”Attendance_Marking_System c:\users\redpranger\documents\visual studio 2017\Projects\Attendance_Marking_System\Attendance_Marking_System\Camera.cs 34 Active
【问题讨论】:
【参考方案1】:Timer.Interval Property 是 Double
类型的属性,而不是 Timespan
。
这是属性的定义:
获取或设置引发 Elapsed 事件的时间间隔,以毫秒为单位。
要将间隔设置为 1 秒(1000 毫秒),请按如下方式设置:
timer.Interval = 1000;
或者在你的例子中,在 1 毫秒:
timer.Interval = 1;
【讨论】:
【参考方案2】:timer.Interval = new TimeSpan(0, 0, 0, 0, 1).TotalMilliseconds;
或者你可以试试
timer.Interval = 1; // 1ms
你不需要每 1ms 刷新一次相机我不认为你的相机有那么多 fps 所以在你的情况下30ms就可以了 所以试试
timer.Interval = 30; // for 30 ms
【讨论】:
虽然您的回答在技术上是正确的,但我不认为创建一个结构只是为了获得毫秒数。 你是对的,实际上他不需要使用 TimeSpan。我写它只是为了让他明白,如果他想给时间间隔赋值,他需要使用 TotalMiliseconds 属性来转换它【参考方案3】:答案很简单, 你所要做的就是
要将间隔设置为 1 秒(1000 毫秒),请按如下方式设置:
timer.Interval = 1000;
【讨论】:
以上是关于使用 Emgu CV 运行相机的主要内容,如果未能解决你的问题,请参考以下文章
Emgu CV 人脸识别:在多个文件上并行运行 DetectHaarCascade 问题
Emgu.CV.CvInvoke”的类型初始值设定项引发异常