Я снимаю изображения с помощью камеры машинного зрения и храню их в папке. Я хочу показать сохраненное изображение в окне PictureBox перед сохранением следующего изображения. Мой код успешно показывает изображение в pictureBox, однако есть задержка, то есть, когда изображение 10 сохраняется в папке, GUI показывает только изображение 3. Я не уверен, как повысить производительность, чтобы GUI для обновления в реальном времени при съемке изображений.
Я думаю, что моя проблема может быть связана с использованием изображения png для создания MemoryStream вместо буфера byte [] (необработанные данные датчика). Я попытался использовать байт [], но не смог успешно заполнить pictureBox.
Это мой код:
// Grab a number of images.
for (int i = 0; i < num_images; ++i)
{
// Wait for an image and then retrieve it. A timeout of 5000 ms is used.
IGrabResult grabResult = camera.StreamGrabber.RetrieveResult(5000,
TimeoutHandling.ThrowException);
using (grabResult)
{
// Image grabbed successfully?
if (grabResult.GrabSucceeded)
{
buffer = grabResult.PixelData as byte[];
//ImageWindow.DisplayImage(0, grabResult);
file_extension = "Position_" + i + ".png";
image_filename = String.Concat(image_filepath, file_extension);
ImagePersistence.Save(ImageFileFormat.Png, image_filename, grabResult);
//image_algorithms();
Image image = Image.FromFile(image_filename);
var ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
var bytes = ms.ToArray();
var imageMemoryStream = new MemoryStream(bytes);
Image imgFromStream = Image.FromStream(imageMemoryStream);
pictureBox1.Image = imgFromStream;
pictureBox1.Refresh();
}
else
{
Console.WriteLine("Error: {0} {1}", grabResult.ErrorCode,
grabResult.ErrorDescription);
}
}
}