0
最大6台のカメラから画像を収集しようとしています。私のコードは動作しますが、カメラのインデックスを切り替えてNewFrameイベントハンドラを個別に名前付きハンドラに設定して各カメラの画像をピクチャボックスに配置する必要があるため、オブジェクト指向ではないようです。これを行うより良い方法はありますか(下記のコードを参照)。画像をキャプチャするために複数のカメラを設定する
private void ImageCollector_Load(object sender, EventArgs e)
{
webcams = new FilterInfoCollection(FilterCategory.VideoInputDevice);
Cameras = new VideoCaptureDevice[webcams.Count];
int index = 0;
foreach (FilterInfo CaptureDevice in webcams)
{
// Enable the cameras display
ViewLabelflowLayoutPanel.Controls[index].Visible = true;
ImageLabelflowLayoutPanel.Controls[index].Visible = true;
ViewflowLayoutPanel.Controls[index].Visible = true;
ImageflowLayoutPanel.Controls[index].Visible = true;
CameracomboBox.Items.Add(CaptureDevice.Name);
try
{
Cameras[index] = new VideoCaptureDevice(webcams[index].MonikerString);
switch (index)
{
case 0:
Cameras[index].NewFrame += new NewFrameEventHandler(cam1_NewFrame);
break;
case 1:
Cameras[index].NewFrame += new NewFrameEventHandler(cam2_NewFrame);
break;
case 2:
Cameras[index].NewFrame += new NewFrameEventHandler(cam3_NewFrame);
break;
case 3:
Cameras[index].NewFrame += new NewFrameEventHandler(cam4_NewFrame);
break;
case 4:
Cameras[index].NewFrame += new NewFrameEventHandler(cam5_NewFrame);
break;
case 5:
Cameras[index].NewFrame += new NewFrameEventHandler(cam6_NewFrame);
break;
}//endswitch
Cameras[index].Start();
}//endtry
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}//endcatch
}//endforeach
CameracomboBox.SelectedIndex = 0;
index++;
}//endImageCollector_Load
おかげ