每当我尝试自动保存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();
}
}
}
答案 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中,因为您需要使用管理权限运行该程序。我建议在桌面上使用文件夹或使用某些库文件夹,例如“我的图片”。