【发布时间】:2017-04-26 09:59:31
【问题描述】:
我的CameraWindow 中有一个ObservableCollection,我在其中手动从我的USB 网络摄像头捕获图像。这是我的收藏:
public ObservableCollection<BitmapImage> CameraWindowCapturedImages { get; } = new ObservableCollection<BitmapImage>();
这就是我拍摄图像的方式
void Cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
try
{
System.Drawing.Image img = (Bitmap)eventArgs.Frame.Clone();
MemoryStream ms = new MemoryStream();
img.Save(ms, ImageFormat.Jpeg);
ms.Seek(0, SeekOrigin.Begin);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
bi.Freeze();
this.latestFrame = bi;
Dispatcher.BeginInvoke(new ThreadStart(delegate
{
previewWindow.Source = bi;
}));
}
catch (Exception ex)
{
}
}
private void manualCapture_Click(object sender, RoutedEventArgs e)
{
if (captureImage != null)
{
captureImage(latestFrame);
}
Bitmap bm = BitmapImage2Bitmap(latestFrame);
CapturedImages.Add(latestFrame);
}
private Bitmap BitmapImage2Bitmap(BitmapImage bitmapImage)
{
using (MemoryStream outStream = new MemoryStream())
{
BitmapEncoder enc = new BmpBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(bitmapImage));
enc.Save(outStream);
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(outStream);
return new Bitmap(bitmap);
}
}
我的MainWindow 中也有ObservableCollection
public ObservableCollection<BitmapImage> MainWindowCapturedImages { get; } = new ObservableCollection<BitmapImage>();
我想将手动捕获的图像存储在我的CameraWindow 中的MainWindow 的ObservableCollection 中。
这可能吗?如果可以,请有人帮我解决这个问题? 谢谢!
【问题讨论】:
-
您可以将一个可观察集合分配/复制到另一个。您在代码中的哪个位置分配/复制所需的集合?这样做的障碍是什么?
-
您是在询问如何将 BitmapImage 对象添加到主窗口中的 MainWindowCapturedImages 集合中,或者您的问题是什么?
-
@mm8 询问如何将 BitmapImage 对象添加到我的主窗口中的 MainWindowCapturedImages 集合中
-
从什么方法?
-
我目前正在使用
manualCapture_Click中的Action<BitmapImage> captureImage;将捕获的图像添加到我的CameraWindowCapturedImages中
标签: wpf observablecollection aforge