我想使用for循环将图像保存在文件夹C:\ Users \ crowds \ Documents \ Example中。 我也希望这个名字保存如下: Sample.jpg,Sample1.jpg
知道如何实施它?
这是我的代码段:
private void button4_Click(object sender, EventArgs e)
{
var capture = new Emgu.CV.Capture();
using (var ImageFrame = capture.QueryFrame())
{
if (ImageFrame != null)
{
pictureBox1.Image = ImageFrame.ToBitmap();
ImageFrame.Save(@"C:\Users\crowds\Documents\Example\Sample.jpg");
}
_capture.Dispose();
}
答案 0 :(得分:1)
你可以尝试这样的事情:
List<Image> imageList = //Get all the image list
for(i=0; i<imageList.Count;i++)
{
ImageFrame.Save(@"C:\Users\crowds\Documents\ExampleSample"+i.toString()+".jpg");
}
答案 1 :(得分:0)
试试吧
string root="C:\Users\crowds\Documents\Example\Sample";
for(int i=0;i<value;i++)
{
string path=root+i+".jpg"; ImageFrame.Save(path);
}
并且更好地调试更多。
答案 2 :(得分:0)
根据您的评论,如果您只想在每次执行以下操作时保存到不同的文件名:
private int filenumber = 0;
private void button4_Click(object sender, EventArgs e)
{
using (var capture = new Emgu.CV.Capture())
using (var ImageFrame = capture.QueryFrame())
{
if (ImageFrame != null)
{
pictureBox1.Image = ImageFrame.ToBitmap();
ImageFrame.Save(String.Format(@"C:\Users\crowds\Documents\Example\Sample{0}.jpg", filenumber++));
}
}
}
请注意,此代码不检查文件的预先存在,如果已存在则可能抛出异常。理想情况下,您应首先使用File.Exists(...)
答案 3 :(得分:0)
EMGU CV库从捕获设备创建捕获图像,然后根据需要进行管理。您的示例是尝试在按下按钮时保存图像,而不是迭代图像集合。
您可能希望了解的是您维护的counter mechanism
。例如,当您按下按钮或应用程序初始化时,您会阅读包含图像的directory
并解析名称以确定最后保存图像的名称。获取图像名称的number
部分并使用它来初始化counter
,然后每次按下按钮保存图像,递增计数器。
以下简化示例:
<强>计数器强>
private int lastSaveCount = 0;
这需要在您的Button_Click
事件和下面的初始化计数器机制可以访问的位置。
初始化计数器
var files = Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Example\", @"Sample*.jpg").ToList();
foreach (var file in files)
{
var split = Regex.Split(file, @"[a-zA-Z]{1,}([\d]{1,}).jpg", RegexOptions.IgnoreCase);
var save = 0;
if (Int32.TryParse(split[1], out save))
{
lastSaveCount = save > lastSaveCount ? save : lastSaveCount;
}
}
将上述内容置于适当的位置。
按按
private void button4_Click(object sender, EventArgs e)
{
var capture = new Emgu.CV.Capture();
using (var ImageFrame = capture.QueryFrame())
{
if (ImageFrame != null)
{
lastSaveCount++;
pictureBox1.Image = ImageFrame.ToBitmap();
var filename = string.Format(@"C:\Users\crowds\Documents\Example\Sample{0}.jpg", lastSaveCount);
ImageFrame.Save(filename);
}
_capture.Dispose();
}
}