图像保存路径给出运行时错误

时间:2013-10-20 11:14:12

标签: c# emgucv

每当我尝试自动保存webcamera捕获图像时,运行时错误就会出现在path.automaticaly名称,如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();
    }

}

}

2 个答案:

答案 0 :(得分:1)

您需要屏蔽反斜杠,否则编译器会尝试解释\p或者\0,但他不能

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

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

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

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

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

答案 1 :(得分:0)

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

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

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