【问题标题】:Running the camera using Emgu CV使用 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

【问题讨论】:

    标签: c# visual-studio emgucv face-detection


    【解决方案1】:

    Timer.Interval PropertyDouble 类型的属性,而不是 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多