C#中没有使用AForge的网络摄像头图片

时间:2018-10-26 07:22:40

标签: c# image winforms aforge

我正在学习C#,并且正在尝试实施网络摄像头图片捕获程序。我正在使用Aforge库,问题是我的图片框未显示网络摄像头图像,并且我不明白为什么。如果有人知道我的错误,请告诉我。先感谢您。

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using DarrenLee.Media;

namespace test4
{
    public partial class MainForm : Form
    {
        int count = 0;
        Camera myCamera = new Camera();

        public MainForm()
        {
            InitializeComponent();

            GetInfo();
            myCamera.OnFrameArrived += myCamera_OnFrameArrived;
        }
        private void GetInfo()
        {
            var cameraDevices = myCamera.GetCameraSources();
            var cameraResolutions = myCamera.GetSupportedResolutions();

            foreach (var d in cameraDevices)
                cmbCameraDevices.Items.Add(d);

            foreach (var r in cameraResolutions)
                cmbCameraResolutions.Items.Add(r);

            cmbCameraDevices.SelectedIndex = 0;
            cmbCameraDevices.SelectedIndex = 0;

        }
        private void myCamera_OnFrameArrived(object source, FrameArrivedEventArgs e)
        {
            Image img = e.GetFrame();
            picCamera.Image = img;
        }
        void ComboBox1SelectedIndexChanged(object sender, EventArgs e)
        {
            myCamera.ChangeCamera(cmbCameraDevices.SelectedIndex);

        }
        void ComboBox2SelectedIndexChanged(object sender, EventArgs e)
        {
            myCamera.Start(cmbCameraDevices.SelectedIndex);
        }
        void Form1FormClosing(object sender, FormClosingEventArgs e)
        {
            myCamera.Stop();
        }
        void BTTsaveClick(object sender, EventArgs e)
        {
            string filename = Application.StartupPath + @"\" + "Image" + count.ToString();
            myCamera.Capture(filename);
            count++;
        }
    }
}

我编译时的外观图片: https://i.gyazo.com/6956a07405cd4bf5e74c20bc321bd32e.png

我正在将图片框与该行中的内容相连:

图片img = e.GetFrame(); picCamera.Image = img;

1 个答案:

答案 0 :(得分:0)

在编写代码之前,请确保单击对象。

示例:单击设计表单中的按钮,然后在单击按钮后将 BTTsaveClick 的代码粘贴到新创建的方法中。

如果使用的是Visual Studio,则可以检查是否引用了这些方法。如果未引用,则意味着将不会读取该代码。