예제 #1
0
 /// <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;
 }
예제 #2
0
파일: Robot.cs 프로젝트: SamLin95/cs3630
        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();
        }
예제 #3
0
 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;
     }
 }
예제 #4
0
파일: Robot.cs 프로젝트: SamLin95/cs3630
 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();
 }