0

每当我尝试自动保存网络摄像头捕获的图像时,路径中就会出现运行时错误。自动名称如 0.jpg,02.jpg,03.jpg 这样图像将保存在特定提及的文件夹中。但给出运行时间错误。请检查这个。

namespace camera1
{
    public partial class Form1 : Form
    {
        private Capture capture;
        private bool captureinprogress;

        public Form1()
        {
            InitializeComponent();
        }
        private void ProcessFrame(object sender, EventArgs arg)
        {
           Image<Bgr, Byte> ImageFrame = capture.QueryFrame();
           cameraimage.Image = ImageFrame;
           string root = "C:\\photo\0"; // automatically saving image to c drive like       001.jpg,002.jpg;
           for (int i = 0; i < 100; i++)
           {
               if (File.Exists(" "))
               { }
               else
               {
                   string Path = root + i + ".jpg";
                   ImageFrame.Save(Path);
               }

               {
                   if (ImageFrame != null)
                   {
                       pictureBox1.Image = ImageFrame.ToBitmap();
                   }
                   if (pictureBox1 != null)
                   {
                       pictureBox2.Image = ImageFrame.ToBitmap();
                   }
                   if (pictureBox2 != null)
                   {
                       pictureBox3.Image = ImageFrame.ToBitmap();
                   }
             }
         }
     }
     private void btnStart_Click(object sender, EventArgs e)
     {
        if (capture == null)
        {
            try
            {
                capture = new Capture();
            }
            catch (NullReferenceException excpt)
            {
                MessageBox.Show(excpt.Message);
            }
        }
        if (capture != null)
        {
            if (captureinprogress)
            {  //if camera is getting frames then stop the capture and set button Text
                // "Start" for resuming capture
                btnstart.Text = "Start!"; //
                Application.Idle -= ProcessFrame;
            }
            else
            {
                //if camera is NOT getting frames then start the capture and set button
                // Text to "Stop" for pausing capture
                btnstart.Text = "Stop";
                Application.Idle += ProcessFrame;
            }

            captureinprogress = !captureinprogress;        
        }
    }

    private void ReleaseData()
    {
        if (capture != null)
            capture.Dispose();
    }

}

}
4

2 回答 2

1

您需要屏蔽反斜杠,否则编译器将尝试解释\poder \0,他不能

因此,最简单的方法是@在字符串的开头添加一个。

string root = @"C:\photo\0";

或者你一直使用双反斜杠:

string root = "C:\\photo\\0";

如需进一步参考,请阅读:

于 2013-10-20T11:42:49.553 回答
0

我这里没有实例,但您需要将其更改为

string root = @"C:\photo\0\";// instead of string root = "C:\\photo\0";

注意:您不能直接保存到 C: Drive,因为您需要以管理员权限运行该程序。我建议使用桌面上的文件夹或某些库文件夹,例如我的图片。

于 2013-10-20T11:33:52.047 回答