/// <summary> /// See adapter documentation in the Myro 3 developer manual. /// http://wiki.roboteducation.org/Myro_3.0_Developer_Manual /// </summary> public void QueryFrame(MyroImageType type, out int Width, out int Height, out byte[] Image) { var r = RSUtils.ReceiveSync(queue, opPort.QueryFrame(new webcam.QueryFrameRequest() { Format = type.Guid }), Params.DefaultRecieveTimeout); Width = r.Size.Width; Height = r.Size.Height; Image = r.Frame; }
public static Bitmap TakeBitmap(MyroImageType type) { if (webcamAdapter != null) { var r = takePicture(type); Bitmap ret; System.Drawing.Imaging.BitmapData bitmapData; ret = new Bitmap(r.Width, r.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); if (r.Image.Length != 3 * ret.Width * ret.Height) throw new Exception("Image returned from QueryFrame in TakeBitmap is the wrong size"); // Get bitmap data bitmapData = ret.LockBits( new Rectangle(0, 0, ret.Width, ret.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb); // Copy frame System.Runtime.InteropServices.Marshal.Copy( r.Image, 0, bitmapData.Scan0, 3 * ret.Width * ret.Height); ret.UnlockBits(bitmapData); return ret; } else throw new MyroNotInitializedException(); }
private void OnImageTypeChange(object sender, SelectionChangedEventArgs e) { ComboBoxItem item = ImageTypesBox.SelectedItem as ComboBoxItem; // This could be null because nothing is selected, or because // of a casting error (the latter should never happen). if (item != null) { curType = (MyroImageType)item.Tag; } }
public static MyroImage takePicture(MyroImageType type) { if (webcamAdapter != null) { int width, height; byte[] image; webcamAdapter.Adapter.QueryFrame(type, out width, out height, out image); return new MyroImage() { Width = width, Height = height, Image = image }; } else throw new MyroNotInitializedException(); }