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
감사