0

ウェブカメラのキャプチャ画像を自動的に保存しようとすると、ランタイム エラーが 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();
    }

}

}
4

2 に答える 2

1

バックスラッシュをマスクする必要があります。そうしないと、コンパイラが\poderを解釈しようとしますが、解釈\0できません。

@したがって、これを実現する最も簡単な方法は、文字列の先頭にa を追加することです。

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: ドライブに直接保存することはできません。デスクトップ上のフォルダーまたはマイ ピクチャなどのライブラリ フォルダーを使用することをお勧めします。

于 2013-10-20T11:33:52.047 に答える