public SnapshotRetriever(CameraSummary summary, IGXFactory igxFactory) { this.summary = summary; try { stopwatch.Start(); device = igxFactory.OpenDeviceBySN(summary.Identifier, GX_ACCESS_MODE.GX_ACCESS_EXCLUSIVE); log.DebugFormat("{0} opened in {1} ms.", summary.Alias, stopwatch.ElapsedMilliseconds); stopwatch.Stop(); featureControl = device.GetRemoteFeatureControl(); DahengHelper.AfterOpen(featureControl); width = (int)featureControl.GetIntFeature("Width").GetValue(); height = (int)featureControl.GetIntFeature("Height").GetValue(); isColor = DahengHelper.IsColor(featureControl); stream = device.OpenStream(0); } catch (Exception e) { LogError(e, "Failed to open device"); } }
public void CameraForgotten(CameraSummary summary) { ForgetCamera(summary); List <CameraSummary> newList = new List <CameraSummary>(cameraSummaries); UpdateCameraList(newList); }
public FormConfiguration(CameraSummary summary) { this.summary = summary; InitializeComponent(); tbAlias.AutoSize = false; tbAlias.Height = 20; tbAlias.Text = summary.Alias; lblSystemName.Text = summary.Name; btnIcon.BackgroundImage = summary.Icon; SpecificInfo specific = summary.Specific as SpecificInfo; if (specific == null || specific.Handle == null || !specific.Handle.IsValid) { return; } deviceHandle = specific.Handle; cameraProperties = CameraPropertyManager.Read(specific.Handle, summary.Identifier); if (cameraProperties.Count != specific.CameraProperties.Count) { specificChanged = true; } Populate(); }
public FormConfiguration(CameraSummary summary, Action disconnect, Action connect) { this.summary = summary; this.disconnect = disconnect; this.connect = connect; InitializeComponent(); tbAlias.AutoSize = false; tbAlias.Height = 20; tbAlias.Text = summary.Alias; lblSystemName.Text = summary.Name; btnIcon.BackgroundImage = summary.Icon; btnReconnect.Text = CameraLang.FormConfiguration_Reconnect; SpecificInfo specific = summary.Specific as SpecificInfo; if (specific == null || specific.Device == null) { return; } device = specific.Device; cameraProperties = CameraPropertyManager.Read(device); if (cameraProperties.Count != specific.CameraProperties.Count) { specificChanged = true; } PopulateCameraControls(); this.Text = CameraLang.FormConfiguration_Title; btnApply.Text = CameraLang.Generic_Apply; UpdateResultingFramerate(); }
private void UpdateCamera(CameraSummary summary) { if (!lvCameras.Items.ContainsKey(summary.Identifier)) { return; } ListViewItem lvi = lvCameras.Items[summary.Identifier]; int index = IndexOfCamera(cameraSummaries, summary.Identifier); cameraSummaries[index] = summary; cameraIcons.Images.RemoveByKey(lvi.ImageKey); cameraIcons.Images.Add(summary.Identifier, summary.Icon); lvi.Text = summary.Alias; // We specify the image by key, but the ListView actually uses the index to // refer to the image. So when we alter the image list, everything is scrambled. // Assigning the key again seems to go through the piece of code that recomputes the index and fixes things. foreach (ListViewItem item in lvCameras.Items) { item.ImageKey = item.ImageKey; } lvCameras.Invalidate(); }
public FrameGrabber(CameraSummary summary, CameraManagerHTTP manager) { this.summary = summary; this.manager = manager; SpecificInfo specific = summary.Specific as SpecificInfo; if (specific == null) { return; } string url = URLHelper.BuildURL(specific); this.format = specific.Format; if (format == "MJPEG") { device = new CameraHTTPClientMJPEG(url, specific.User, specific.Password); } else if (format == "JPEG") { device = new CameraHTTPClientJPEG(url, specific.User, specific.Password); } }
public FormConfiguration(CameraSummary summary) { this.summary = summary; InitializeComponent(); tbAlias.AutoSize = false; tbAlias.Height = 20; tbAlias.Text = summary.Alias; lblSystemName.Text = summary.Name; btnIcon.BackgroundImage = summary.Icon; SpecificInfo specific = summary.Specific as SpecificInfo; if (specific == null || specific.Camera == null || !specific.Camera.IsOpened) { return; } camera = specific.Camera; int temp; camera.Device.GetDeviceID(out temp); deviceId = (long)temp; cameraProperties = CameraPropertyManager.Read(camera, deviceId); if (cameraProperties.Count != specific.CameraProperties.Count) { specificChanged = true; } Populate(); }
public SnapshotRetriever(CameraSummary summary, string moniker) { this.moniker = moniker; this.summary = summary; device = new VideoCaptureDevice(moniker); }
public override ICaptureSource CreateCaptureSource(CameraSummary summary) { string moniker = summary.Identifier; FrameGrabber grabber = new FrameGrabber(summary, moniker); return(grabber); }
public override string GetSummaryAsText(CameraSummary summary) { string result = ""; string alias = summary.Alias; SpecificInfo info = summary.Specific as SpecificInfo; try { if (info != null && info.StreamFormat != null && info.CameraProperties.ContainsKey("width") && info.CameraProperties.ContainsKey("height") && info.CameraProperties.ContainsKey("framerate")) { string format = info.StreamFormat; int width = int.Parse(info.CameraProperties["width"].CurrentValue, CultureInfo.InvariantCulture); int height = int.Parse(info.CameraProperties["height"].CurrentValue, CultureInfo.InvariantCulture); double framerate = double.Parse(info.CameraProperties["framerate"].CurrentValue, CultureInfo.InvariantCulture); result = string.Format("{0} - {1}×{2} @ {3:0.##} fps ({4}).", alias, width, height, framerate, format); } else { result = string.Format("{0}", alias); } } catch { result = string.Format("{0}", alias); } return(result); }
public override bool Configure(CameraSummary summary, Action disconnect, Action connect) { bool needsReconnection = false; SpecificInfo info = summary.Specific as SpecificInfo; if (info == null) { return(false); } FormConfiguration form = new FormConfiguration(summary, disconnect, connect); FormsHelper.Locate(form); if (form.ShowDialog() == DialogResult.OK) { if (form.AliasChanged) { summary.UpdateAlias(form.Alias, form.PickedIcon); } if (form.SpecificChanged) { info.CameraProperties = form.CameraProperties; summary.UpdateDisplayRectangle(Rectangle.Empty); needsReconnection = true; } CameraTypeManager.UpdatedCameraSummary(summary); } form.Dispose(); return(needsReconnection); }
public override bool Configure(CameraSummary summary) { bool needsReconnection = false; FormConfiguration form = new FormConfiguration(summary); FormsHelper.Locate(form); if (form.ShowDialog() == DialogResult.OK) { if (form.AliasChanged) { summary.UpdateAlias(form.Alias, form.PickedIcon); } if (form.SpecificChanged) { summary.UpdateSpecific(form.Specific); summary.UpdateDisplayRectangle(Rectangle.Empty); needsReconnection = true; } CameraTypeManager.UpdatedCameraSummary(summary); } form.Dispose(); return(needsReconnection); }
public FormConfiguration(CameraSummary summary) { this.summary = summary; this.identifier = summary.Identifier; InitializeComponent(); tbAlias.AutoSize = false; tbAlias.Height = 20; tbAlias.Text = summary.Alias; lblSystemName.Text = summary.Name; btnIcon.BackgroundImage = summary.Icon; InitializeMediaTypes(summary); if (canStreamConfig) { PopulateFormats(); } else { DisableStreamConfig(); } streamConfigInitialized = true; cameraProperties = CameraPropertyManager.Read(device); PopulateCameraControl(); Localize(); }
public override string GetSummaryAsText(CameraSummary summary) { string result = ""; string alias = summary.Alias; SpecificInfo info = summary.Specific as SpecificInfo; try { if (info != null && info.CameraProperties.ContainsKey("Width") && info.CameraProperties.ContainsKey("Height") && info.CameraProperties.ContainsKey("AcquisitionFrameRate")) { int width = int.Parse(info.CameraProperties["Width"].CurrentValue, CultureInfo.InvariantCulture); int height = int.Parse(info.CameraProperties["Height"].CurrentValue, CultureInfo.InvariantCulture); double framerate = DahengHelper.GetResultingFramerate(info.Device); if (framerate == 0) { framerate = double.Parse(info.CameraProperties["AcquisitionFrameRate"].CurrentValue, CultureInfo.InvariantCulture); } result = string.Format("{0} - {1}×{2} @ {3:0.##} fps.", alias, width, height, framerate); } else { result = string.Format("{0}", alias); } } catch { result = string.Format("{0}", alias); } return(result); }
public SnapshotRetriever(CameraSummary summary, long deviceId) { this.summary = summary; camera.EventFrame += camera_EventFrame; camera.EventDeviceRemove += camera_EventDeviceRemove; camera.EventDeviceUnPlugged += camera_EventDeviceUnPlugged; try { uEye.Defines.Status status = camera.Init((Int32)deviceId | (Int32)uEye.Defines.DeviceEnumeration.UseDeviceID); if (status != uEye.Defines.Status.SUCCESS) { log.ErrorFormat("Camera {0} could not be opened for thumbnail capture.", summary.Alias); return; } // We do not load the camera-specific profile for the thumbnail at the moment. // For some reason the .ToBitmap method doesn't work well on the RGB32 format, so in order to at least have something we // load the camera on the default profile for the thumbnail. //ProfileHelper.Load(camera, ProfileHelper.GetProfileFilename(summary.Identifier)); status = camera.Memory.Allocate(); if (status != uEye.Defines.Status.SUCCESS) { log.ErrorFormat("Camera {0} could not have its buffer allocated for thumbnail capture.", summary.Alias); return; } } catch (Exception e) { LogError(e, ""); } }
public override string GetSummaryAsText(CameraSummary summary) { string result = ""; string alias = summary.Alias; SpecificInfo info = summary.Specific as SpecificInfo; if (info != null && info.MediaTypeIndex >= 0) { VideoCaptureDevice device = new VideoCaptureDevice(summary.Identifier); Dictionary <int, MediaType> mediaTypes = MediaTypeImporter.Import(device); if (mediaTypes.ContainsKey(info.MediaTypeIndex)) { Size size = mediaTypes[info.MediaTypeIndex].FrameSize; float fps = (float)info.SelectedFramerate; string compression = mediaTypes[info.MediaTypeIndex].Compression; result = string.Format("{0} - {1}×{2} @ {3:0.##} fps ({4}).", alias, size.Width, size.Height, fps, compression); } else { result = string.Format("{0}", alias); } } else { result = string.Format("{0}", alias); } return(result); }
public override bool Configure(CameraSummary summary) { bool needsReconnection = false; FormConfiguration form = new FormConfiguration(summary); FormsHelper.Locate(form); if (form.ShowDialog() == DialogResult.OK) { if (form.AliasChanged) { summary.UpdateAlias(form.Alias, form.PickedIcon); } if (form.SpecificChanged) { SpecificInfo info = new SpecificInfo(); info.MediaTypeIndex = form.SelectedMediaTypeIndex; info.SelectedFramerate = form.SelectedFramerate; info.CameraProperties = form.CameraProperties; summary.UpdateSpecific(info); summary.UpdateDisplayRectangle(Rectangle.Empty); needsReconnection = form.NeedsReconnection; } CameraTypeManager.UpdatedCameraSummary(summary); } form.Dispose(); return(needsReconnection); }
public override bool Configure(CameraSummary summary) { bool needsReconnection = false; SpecificInfo info = summary.Specific as SpecificInfo; if (info == null) { return(false); } FormConfiguration form = new FormConfiguration(summary); if (form.ShowDialog() == DialogResult.OK) { if (form.AliasChanged) { summary.UpdateAlias(form.Alias, form.PickedIcon); } if (form.SpecificChanged) { info.StreamFormat = form.SelectedStreamFormat.Symbol; info.Bayer8Conversion = form.Bayer8Conversion; info.CameraProperties = form.CameraProperties; summary.UpdateDisplayRectangle(Rectangle.Empty); needsReconnection = true; } CameraTypeManager.UpdatedCameraSummary(summary); } form.Dispose(); return(needsReconnection); }
public override void ForgetCamera(CameraSummary summary) { if (cache.ContainsKey(summary.Identifier)) { cache.Remove(summary.Identifier); } }
public override CameraBlurb BlurbFromSummary(CameraSummary summary) { string specific = SpecificInfoSerialize(summary); CameraBlurb blurb = new CameraBlurb(CameraType, summary.Identifier, summary.Alias, summary.Icon, summary.DisplayRectangle, summary.AspectRatio.ToString(), specific); return(blurb); }
private string SpecificInfoSerialize(CameraSummary summary) { SpecificInfo info = summary.Specific as SpecificInfo; if (info == null) { return(null); } XmlDocument doc = new XmlDocument(); XmlElement xmlRoot = doc.CreateElement("FrameGenerator"); XmlElement xmlFrameInterval = doc.CreateElement("FrameInterval"); string frameInterval = string.Format("{0}", info.FrameInterval); xmlFrameInterval.InnerText = frameInterval; xmlRoot.AppendChild(xmlFrameInterval); XmlElement xmlFrameSize = doc.CreateElement("FrameSize"); string frameSize = string.Format("{0};{1}", info.FrameSize.Width, info.FrameSize.Height); xmlFrameSize.InnerText = frameSize; xmlRoot.AppendChild(xmlFrameSize); doc.AppendChild(xmlRoot); return(doc.OuterXml); }
public override List <CameraSummary> DiscoverCameras(IEnumerable <CameraBlurb> blurbs) { List <CameraSummary> summaries = new List <CameraSummary>(); foreach (CameraBlurb blurb in blurbs) { if (blurb.CameraType != CameraType) { continue; } string alias = blurb.Alias; string identifier = blurb.Identifier; Bitmap icon = blurb.Icon ?? defaultIcon; Rectangle displayRectangle = blurb.DisplayRectangle; CaptureAspectRatio aspectRatio = CaptureAspectRatio.Auto; if (!string.IsNullOrEmpty(blurb.AspectRatio)) { aspectRatio = (CaptureAspectRatio)Enum.Parse(typeof(CaptureAspectRatio), blurb.AspectRatio); } object specific = SpecificInfoDeserialize(blurb.Specific); CameraSummary summary = new CameraSummary(alias, defaultName, identifier, icon, displayRectangle, aspectRatio, specific, this); summaries.Add(summary); } return(summaries); }
public override bool Configure(CameraSummary summary) { bool needsReconnection = false; FormConfiguration form = new FormConfiguration(summary); if (form.ShowDialog() == DialogResult.OK) { if (form.AliasChanged) { summary.UpdateAlias(form.Alias, form.PickedIcon); } if (form.SpecificChanged) { SpecificInfo info = new SpecificInfo(); info.FrameInterval = form.FrameInterval; info.FrameSize = form.FrameSize; summary.UpdateSpecific(info); summary.UpdateDisplayRectangle(Rectangle.Empty); needsReconnection = true; } CameraTypeManager.UpdatedCameraSummary(summary); } form.Dispose(); return(needsReconnection); }
private void Drop(DragEventArgs e, int target) { if (e.Data.GetDataPresent(typeof(CameraSummary))) { CameraSummary summary = (CameraSummary)e.Data.GetData(typeof(CameraSummary)); if (summary != null) { CameraTypeManager.LoadCamera(summary, target); } } else if (e.Data.GetDataPresent(DataFormats.StringFormat)) { string filename = (string)e.Data.GetData(DataFormats.StringFormat); FileLoadAsked(this, new FileLoadAskedEventArgs(filename, target)); } else if (e.Data.GetDataPresent(DataFormats.FileDrop)) { Array fileArray = (Array)e.Data.GetData(DataFormats.FileDrop); if (fileArray != null) { string filename = fileArray.GetValue(0).ToString(); FileLoadAsked(this, new FileLoadAskedEventArgs(filename, target)); } } }
public void UpdateSummary(CameraSummary summary) { this.Summary = summary; lblAlias.Text = summary.Alias; btnIcon.BackgroundImage = summary.Icon; RelocateInfo(); }
private static void LoadUnspecified(ScreenManagerKernel manager, CameraSummary summary) { if (manager.ScreenCount == 0) { manager.AddCaptureScreen(); LoadInSpecificTarget(manager, 0, summary); } else if (manager.ScreenCount == 1) { LoadInSpecificTarget(manager, 0, summary); } else if (manager.ScreenCount == 2) { int emptyScreen = manager.FindEmptyScreen(); if (emptyScreen != -1) { LoadInSpecificTarget(manager, emptyScreen, summary); } else { LoadInSpecificTarget(manager, 1, summary); } } }
public FormCameraAlias(CameraSummary summary) { this.summary = summary; InitializeComponent(); Initialize(); tbAlias.SelectAll(); tbAlias.Focus(); }
public CameraSummary GetResult() { string id = Guid.NewGuid().ToString(); CameraSummary summary = manager.GetDefaultCameraSummary(id); summary.UpdateSpecific(CreateSpecific()); return(summary); }
public void LoadCamera(CameraSummary summary) { CameraTypeManager.StopDiscoveringCameras(); CameraManager manager = summary.Manager; grabber = manager.Connect(summary); }
private string SpecificInfoSerialize(CameraSummary summary) { SpecificInfo info = summary.Specific as SpecificInfo; if (info == null) { return(null); } XmlDocument doc = new XmlDocument(); XmlElement xmlRoot = doc.CreateElement("Baumer"); XmlElement xmlStreamFormat = doc.CreateElement("StreamFormat"); xmlStreamFormat.InnerText = info.StreamFormat; xmlRoot.AppendChild(xmlStreamFormat); XmlElement xmlDemosaicing = doc.CreateElement("Demosaicing"); xmlDemosaicing.InnerText = info.Demosaicing.ToString().ToLowerInvariant(); xmlRoot.AppendChild(xmlDemosaicing); XmlElement xmlCompression = doc.CreateElement("Compression"); xmlCompression.InnerText = info.Compression.ToString().ToLowerInvariant(); xmlRoot.AppendChild(xmlCompression); XmlElement xmlCameraProperties = doc.CreateElement("CameraProperties"); foreach (KeyValuePair <string, CameraProperty> pair in info.CameraProperties) { if (pair.Value == null) { continue; } XmlElement xmlCameraProperty = doc.CreateElement("CameraProperty"); XmlAttribute attr = doc.CreateAttribute("key"); attr.Value = pair.Key; xmlCameraProperty.Attributes.Append(attr); XmlElement xmlCameraPropertyValue = doc.CreateElement("Value"); xmlCameraPropertyValue.InnerText = pair.Value.CurrentValue; xmlCameraProperty.AppendChild(xmlCameraPropertyValue); XmlElement xmlCameraPropertyAuto = doc.CreateElement("Auto"); xmlCameraPropertyAuto.InnerText = pair.Value.Automatic.ToString().ToLower(); xmlCameraProperty.AppendChild(xmlCameraPropertyAuto); xmlCameraProperties.AppendChild(xmlCameraProperty); } xmlRoot.AppendChild(xmlCameraProperties); doc.AppendChild(xmlRoot); return(doc.OuterXml); }