예제 #1
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            AppPreference preference = new AppPreference();


            OnButtonClick += delegate
            {
                CvInvoke.UseOpenCL = preference.UseOpenCL;
                String oclDeviceName = preference.OpenClDeviceName;
                if (!String.IsNullOrEmpty(oclDeviceName))
                {
                    CvInvoke.OclSetDefaultDevice(oclDeviceName);
                }

                long time;
                using (Mat box = Assets.GetMat("box.png"))
                    using (Mat boxInScene = Assets.GetMat("box_in_scene.png"))
                        using (Mat result = DrawMatches.Draw(box, boxInScene, out time))
                        {
                            SetImageBitmap(result.ToBitmap(Bitmap.Config.Rgb565));

                            String computeDevice = CvInvoke.UseOpenCL ? "OpenCL: " + Emgu.CV.Ocl.Device.Default.Name : "CPU";
                            SetMessage(String.Format("Matched with '{0}' in {1} milliseconds.", computeDevice, time));
                        }
            };
        }
예제 #2
0
        protected override View OnCreateDialogView()
        {
            LayoutInflater inflator = LayoutInflater.FromContext(this.Context);
            View           dialog   = inflator.Inflate(Resource.Layout.opencl_preference, null);

            _openCLToggleButton = dialog.FindViewById <ToggleButton>(Resource.Id.opencl_preference_toggleButton);

            AppPreference preference = new AppPreference();

            _openCLToggleButton.Checked = preference.UseOpenCL;

            _openCLToggleButton.CheckedChange += (sender, args) =>
            {
                bool isChecked = args.IsChecked;

                if (isChecked && !CvInvoke.HaveOpenCL)
                {
                    _openCLToggleButton.Checked = false;
                    Toast.MakeText(Context, "No OpenCL compatible device found.", ToastLength.Long).Show();
                    isChecked = false;
                }

                preference.UseOpenCL = isChecked;
            };

            return(dialog);
        }
예제 #3
0
      protected override void OnCreate(Bundle bundle)
      {
         base.OnCreate(bundle);

         AppPreference preference = new AppPreference();


         OnButtonClick += delegate
         {
            CvInvoke.UseOpenCL = preference.UseOpenCL;
            String oclDeviceName = preference.OpenClDeviceName;
            if (!String.IsNullOrEmpty(oclDeviceName))
            {
               CvInvoke.OclSetDefaultDevice(oclDeviceName);
            }

            long time;
            using (Mat box = new Mat(Assets, "box.png"))
            using (Mat boxInScene = new Mat(Assets, "box_in_scene.png"))
            using (Mat result = DrawMatches.Draw(box, boxInScene, out time))
            {
               SetImageBitmap(result.ToBitmap(Bitmap.Config.Rgb565));

               String computeDevice = CvInvoke.UseOpenCL ? "OpenCL: " + Emgu.CV.Ocl.Device.Default.Name : "CPU";
               SetMessage(String.Format("Matched with '{0}' in {1} milliseconds.", computeDevice, time));
            }
         };
      }
      protected override View OnCreateDialogView()
      {
         
         LayoutInflater inflator = LayoutInflater.FromContext(this.Context);
         View dialog = inflator.Inflate(Resource.Layout.opencl_preference, null);

         _openCLToggleButton = dialog.FindViewById<ToggleButton>(Resource.Id.opencl_preference_toggleButton);

         AppPreference preference = new AppPreference();
         _openCLToggleButton.Checked = preference.UseOpenCL;

         _openCLToggleButton.CheckedChange += (sender, args) =>
         {
            bool isChecked = args.IsChecked;

            if (isChecked && !CvInvoke.HaveOpenCL)
            {
               _openCLToggleButton.Checked = false;
               Toast.MakeText(Context, "No OpenCL compatible device found.", ToastLength.Long).Show();
               isChecked = false;
            }

            preference.UseOpenCL = isChecked;
         };

         return dialog;
      }
예제 #5
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            OnButtonClick += delegate
            {
                AppPreference appPreference = new AppPreference();
                using (Image <Bgr, Byte> image = PickImage("lena.jpg"))
                {
                    ISharedPreferences preference = PreferenceManager.GetDefaultSharedPreferences(ApplicationContext);
                    String             appVersion = PackageManager.GetPackageInfo(PackageName, Android.Content.PM.PackageInfoFlags.Activities).VersionName;
                    if (!preference.Contains("cascade-data-version") || !preference.GetString("cascade-data-version", null).Equals(appVersion) ||
                        !(preference.Contains("cascade-eye-data-path") || preference.Contains("cascade-face-data-path")))
                    {
                        AndroidFileAsset.OverwriteMethod overwriteMethod = AndroidFileAsset.OverwriteMethod.AlwaysOverwrite;

                        FileInfo eyeFile  = AndroidFileAsset.WritePermanantFileAsset(this, "haarcascade_eye.xml", "cascade", overwriteMethod);
                        FileInfo faceFile = AndroidFileAsset.WritePermanantFileAsset(this, "haarcascade_frontalface_default.xml", "cascade", overwriteMethod);

                        //save tesseract data path
                        ISharedPreferencesEditor editor = preference.Edit();
                        editor.PutString("cascade-data-version", appVersion);
                        editor.PutString("cascade-eye-data-path", eyeFile.FullName);
                        editor.PutString("cascade-face-data-path", faceFile.FullName);
                        editor.Commit();
                    }

                    string           eyeXml  = preference.GetString("cascade-eye-data-path", null);
                    string           faceXml = preference.GetString("cascade-face-data-path", null);
                    long             time;
                    List <Rectangle> faces = new List <Rectangle>();
                    List <Rectangle> eyes  = new List <Rectangle>();

                    bool tryUseOpenCL = appPreference.UseOpenCL;
                    DetectFace.Detect(image.Mat, faceXml, eyeXml, faces, eyes, false, tryUseOpenCL, out time);
                    SetMessage(String.Format("Detected with {1} in {0} milliseconds.", time, CvInvoke.UseOpenCL ? "OpenCL" : "CPU"));

                    foreach (Rectangle rect in faces)
                    {
                        image.Draw(rect, new Bgr(System.Drawing.Color.Red), 2);
                    }
                    foreach (Rectangle rect in eyes)
                    {
                        image.Draw(rect, new Bgr(System.Drawing.Color.Blue), 2);
                    }

                    SetImageBitmap(image.ToBitmap());
                }
            };
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            OnImagePicked += (sender, image) =>
            {
                if (image == null)
                {
                    return;
                }
                AppPreference appPreference = new AppPreference();
                CvInvoke.UseOpenCL = appPreference.UseOpenCL;
                String oclDeviceName = appPreference.OpenClDeviceName;
                if (!String.IsNullOrEmpty(oclDeviceName) && CvInvoke.UseOpenCL)
                {
                    CvInvoke.OclSetDefaultDevice(oclDeviceName);
                }

                long        time;
                Rectangle[] pedestrians;
                using (UMat umat = image.GetUMat(AccessType.ReadWrite))
                    pedestrians = FindPedestrian.Find(image, out time);

                String computeDevice = CvInvoke.UseOpenCL ? "OpenCL: " + Emgu.CV.Ocl.Device.Default.Name : "CPU";
                SetMessage(String.Format("Detection completed with {1} in {0} milliseconds.", time, computeDevice));
                foreach (Rectangle rect in pedestrians)
                {
                    CvInvoke.Rectangle(image, rect, new Bgr(System.Drawing.Color.Red).MCvScalar, 2);
                }

                SetImageBitmap(image.ToBitmap());
                image.Dispose();
            };

            OnButtonClick += (sender, args) =>
            {
                PickImage("pedestrian.png");
            };
        }
      protected override void OnCreate(Bundle bundle)
      {
         base.OnCreate(bundle);

         OnImagePicked += (sender, image) =>
         {
            if (image == null)
               return;
            AppPreference appPreference = new AppPreference();
            CvInvoke.UseOpenCL = appPreference.UseOpenCL;
            String oclDeviceName = appPreference.OpenClDeviceName;
            if (!String.IsNullOrEmpty(oclDeviceName) && CvInvoke.UseOpenCL)
            {
               CvInvoke.OclSetDefaultDevice(oclDeviceName);
            }

            long time;
            Rectangle[] pedestrians;
            using (UMat umat = image.GetUMat(AccessType.ReadWrite))
               pedestrians = FindPedestrian.Find(image, out time);

            String computeDevice = CvInvoke.UseOpenCL ? "OpenCL: " + Emgu.CV.Ocl.Device.Default.Name : "CPU";
            SetMessage(String.Format("Detection completed with {1} in {0} milliseconds.", time, computeDevice));
            foreach (Rectangle rect in pedestrians)
            {
               CvInvoke.Rectangle(image, rect, new Bgr(System.Drawing.Color.Red).MCvScalar, 2);
            }

            SetImageBitmap(image.ToBitmap());
            image.Dispose();
         };

         OnButtonClick += (sender, args) =>
         {
            PickImage("pedestrian.png");
         };
      }
예제 #8
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            OnImagePicked += (sender, image) =>
            {
                if (image == null)
                {
                    return;
                }

                AppPreference appPreference = new AppPreference();
                CvInvoke.UseOpenCL = appPreference.UseOpenCL;
                String oclDeviceName = appPreference.OpenClDeviceName;
                if (!String.IsNullOrEmpty(oclDeviceName))
                {
                    CvInvoke.OclSetDefaultDevice(oclDeviceName);
                }


                ISharedPreferences preference = PreferenceManager.GetDefaultSharedPreferences(ApplicationContext);
                String             appVersion = PackageManager.GetPackageInfo(PackageName, Android.Content.PM.PackageInfoFlags.Activities).VersionName;
                if (!preference.Contains("cascade-data-version") || !preference.GetString("cascade-data-version", null).Equals(appVersion) ||
                    !(preference.Contains("cascade-eye-data-path") || preference.Contains("cascade-face-data-path")))
                {
                    AndroidFileAsset.OverwriteMethod overwriteMethod = AndroidFileAsset.OverwriteMethod.AlwaysOverwrite;

                    FileInfo eyeFile  = AndroidFileAsset.WritePermanantFileAsset(this, "haarcascade_eye.xml", "cascade", overwriteMethod);
                    FileInfo faceFile = AndroidFileAsset.WritePermanantFileAsset(this, "haarcascade_frontalface_default.xml", "cascade", overwriteMethod);

                    //save tesseract data path
                    ISharedPreferencesEditor editor = preference.Edit();
                    editor.PutString("cascade-data-version", appVersion);
                    editor.PutString("cascade-eye-data-path", eyeFile.FullName);
                    editor.PutString("cascade-face-data-path", faceFile.FullName);
                    editor.Commit();
                }

                string           eyeXml  = preference.GetString("cascade-eye-data-path", null);
                string           faceXml = preference.GetString("cascade-face-data-path", null);
                long             time;
                List <Rectangle> faces = new List <Rectangle>();
                List <Rectangle> eyes  = new List <Rectangle>();


                DetectFace.Detect(image, faceXml, eyeXml, faces, eyes, out time);

                String computeDevice = CvInvoke.UseOpenCL ? "OpenCL: " + Emgu.CV.Ocl.Device.Default.Name : "CPU";
                SetMessage(String.Format("Detected with {1} in {0} milliseconds.", time, computeDevice));

                foreach (Rectangle rect in faces)
                {
                    CvInvoke.Rectangle(image, rect, new Bgr(System.Drawing.Color.Red).MCvScalar, 2);
                }

                foreach (Rectangle rect in eyes)
                {
                    CvInvoke.Rectangle(image, rect, new Bgr(System.Drawing.Color.Blue).MCvScalar, 2);
                }

                SetImageBitmap(image.ToBitmap());
                image.Dispose();

                if (CvInvoke.UseOpenCL)
                {
                    CvInvoke.OclFinish();
                }
            };

            OnButtonClick += (sender, args) =>
            {
                PickImage("lena.jpg");
            };
        }
예제 #9
0
        protected override View OnCreateDialogView()
        {
            LayoutInflater inflator = LayoutInflater.FromContext(this.Context);
            View           dialog   = inflator.Inflate(Resource.Layout.opencl_preference, null);

            _openCLRadioGroup = dialog.FindViewById <RadioGroup>(Resource.Id.opencl_preference_radio_group);

            AppPreference preference = new AppPreference();

            RadioButton checkedButton = null;
            RadioButton cpuButton     = new RadioButton(this.Context);

            cpuButton.Text = "CPU (no OpenCL)";

            _openCLRadioGroup.AddView(cpuButton);
            //int selectedIdx = -1;
            if (preference.UseOpenCL == false)
            {
                checkedButton = cpuButton;
            }
            cpuButton.Click += (sender, args) =>
            {
                preference.UseOpenCL = false;
                //Toast.MakeText(this.Context, "cpu clicked", ToastLength.Short).Show();
            };


            String selectedDeviceName = preference.OpenClDeviceName;

            if (selectedDeviceName == null && CvInvoke.HaveOpenCL && preference.UseOpenCL)
            {
                selectedDeviceName = Emgu.CV.Ocl.Device.Default.Name;
            }

            if (CvInvoke.HaveOpenCL)
            {
                using (VectorOfOclPlatformInfo oclPlatformInfos = Emgu.CV.Ocl.OclInvoke.GetPlatformsInfo())
                {
                    if (oclPlatformInfos.Size > 0)
                    {
                        for (int i = 0; i < oclPlatformInfos.Size; i++)
                        {
                            Emgu.CV.Ocl.PlatformInfo platformInfo = oclPlatformInfos[i];

                            for (int j = 0; j < platformInfo.DeviceNumber; j++)
                            {
                                Emgu.CV.Ocl.Device device       = platformInfo.GetDevice(j);
                                RadioButton        deviceButton = new RadioButton(this.Context);
                                deviceButton.Text = "OpenCL: " + device.Name;

                                if (preference.UseOpenCL == true && device.Name.Equals(selectedDeviceName))
                                {
                                    checkedButton = deviceButton;
                                }
                                _openCLRadioGroup.AddView(deviceButton);

                                //counter++;
                                deviceButton.Click += (sender, args) =>
                                {
                                    preference.UseOpenCL        = true;
                                    preference.OpenClDeviceName = device.Name;
                                    //Toast.MakeText(this.Context, device.Name + " clicked", ToastLength.Short).Show();
                                };
                            }
                        }
                    }
                }
            }
            if (checkedButton != null)
            {
                _openCLRadioGroup.Check(checkedButton.Id);
            }
            //_openCLRadioGroup.in

            /*
             * _openCLToggleButton.Checked = preference.UseOpenCL;
             *
             * _openCLToggleButton.CheckedChange += (sender, args) =>
             * {
             *    bool isChecked = args.IsChecked;
             *
             *    if (isChecked && !CvInvoke.HaveOpenCL)
             *    {
             *       _openCLToggleButton.Checked = false;
             *       Toast.MakeText(Context, "No OpenCL compatible device found.", ToastLength.Long).Show();
             *       isChecked = false;
             *    }
             *
             *    preference.UseOpenCL = isChecked;
             * };
             */
            return(dialog);
        }
예제 #10
0
      protected override View OnCreateDialogView()
      {
         
         LayoutInflater inflator = LayoutInflater.FromContext(this.Context);
         View dialog = inflator.Inflate(Resource.Layout.opencl_preference, null);

         _openCLRadioGroup = dialog.FindViewById<RadioGroup>(Resource.Id.opencl_preference_radio_group);

         AppPreference preference = new AppPreference();

         RadioButton checkedButton = null;
         RadioButton cpuButton = new RadioButton(this.Context);
         cpuButton.Text = "CPU";

         _openCLRadioGroup.AddView(cpuButton);
         //int selectedIdx = -1;
         if (preference.UseOpenCL == false)
         {
            checkedButton = cpuButton;
         }
         cpuButton.Click += (sender, args) =>
         {
            preference.UseOpenCL = false;
            //Toast.MakeText(this.Context, "cpu clicked", ToastLength.Short).Show();
         };

         String selectedDeviceName = preference.OpenClDeviceName;
         if (selectedDeviceName == null && CvInvoke.HaveOpenCL && preference.UseOpenCL)
         {
            selectedDeviceName = OclDevice.Default.Name;
         }
         //int counter = 1;
         using (VectorOfOclPlatformInfo oclPlatformInfos = OclInvoke.GetPlatformsInfo())
         {
            if (oclPlatformInfos.Size > 0)
            {
               for (int i = 0; i < oclPlatformInfos.Size; i++)
               {
                  OclPlatformInfo platformInfo = oclPlatformInfos[i];

                  for (int j = 0; j < platformInfo.DeviceNumber; j++)
                  {
                     OclDevice device = platformInfo.GetDevice(j);
                     RadioButton deviceButton = new RadioButton(this.Context);
                     deviceButton.Text = "OpenCL: " + device.Name;

                     if (preference.UseOpenCL == true && device.Name.Equals(selectedDeviceName))
                     {
                        checkedButton = deviceButton;
                     }
                     _openCLRadioGroup.AddView(deviceButton);

                     //counter++;
                     deviceButton.Click += (sender, args) =>
                     {
                        preference.UseOpenCL = true;
                        preference.OpenClDeviceName = device.Name;
                        //Toast.MakeText(this.Context, device.Name + " clicked", ToastLength.Short).Show();
                     };

                  }
               }
            }
         }
         if (checkedButton != null)
            _openCLRadioGroup.Check(checkedButton.Id);
         //_openCLRadioGroup.in
         /*
            _openCLToggleButton.Checked = preference.UseOpenCL;

            _openCLToggleButton.CheckedChange += (sender, args) =>
            {
               bool isChecked = args.IsChecked;

               if (isChecked && !CvInvoke.HaveOpenCL)
               {
                  _openCLToggleButton.Checked = false;
                  Toast.MakeText(Context, "No OpenCL compatible device found.", ToastLength.Long).Show();
                  isChecked = false;
               }

               preference.UseOpenCL = isChecked;
            };
            */
         return dialog;
      }
예제 #11
0
      protected override void OnCreate(Bundle bundle)
      {
         base.OnCreate(bundle);

         OnImagePicked += (sender, image) =>
         {
            if (image == null)
               return;

            AppPreference appPreference = new AppPreference();
            CvInvoke.UseOpenCL = appPreference.UseOpenCL;
            String oclDeviceName = appPreference.OpenClDeviceName;
            if (!String.IsNullOrEmpty(oclDeviceName))
            {
               CvInvoke.OclSetDefaultDevice(oclDeviceName);
            }


            ISharedPreferences preference = PreferenceManager.GetDefaultSharedPreferences(ApplicationContext);
            String appVersion = PackageManager.GetPackageInfo(PackageName, Android.Content.PM.PackageInfoFlags.Activities).VersionName;
            if (!preference.Contains("cascade-data-version") || !preference.GetString("cascade-data-version", null).Equals(appVersion)
               || !(preference.Contains("cascade-eye-data-path") || preference.Contains("cascade-face-data-path")))
            {
               AndroidFileAsset.OverwriteMethod overwriteMethod = AndroidFileAsset.OverwriteMethod.AlwaysOverwrite;

               FileInfo eyeFile = AndroidFileAsset.WritePermanantFileAsset(this, "haarcascade_eye.xml", "cascade", overwriteMethod);
               FileInfo faceFile = AndroidFileAsset.WritePermanantFileAsset(this, "haarcascade_frontalface_default.xml", "cascade", overwriteMethod);

               //save tesseract data path
               ISharedPreferencesEditor editor = preference.Edit();
               editor.PutString("cascade-data-version", appVersion);
               editor.PutString("cascade-eye-data-path", eyeFile.FullName);
               editor.PutString("cascade-face-data-path", faceFile.FullName);
               editor.Commit();
            }

            string eyeXml = preference.GetString("cascade-eye-data-path", null);
            string faceXml = preference.GetString("cascade-face-data-path", null);
            long time;
            List<Rectangle> faces = new List<Rectangle>();
            List<Rectangle> eyes = new List<Rectangle>();


            DetectFace.Detect(image, faceXml, eyeXml, faces, eyes, out time);

            String computeDevice = CvInvoke.UseOpenCL ? "OpenCL: " + Emgu.CV.Ocl.Device.Default.Name : "CPU";
            SetMessage(String.Format("Detected with {1} in {0} milliseconds.", time, computeDevice));

            foreach (Rectangle rect in faces)
               CvInvoke.Rectangle(image, rect, new Bgr(System.Drawing.Color.Red).MCvScalar, 2);
               
            foreach (Rectangle rect in eyes)
               CvInvoke.Rectangle(image, rect, new Bgr(System.Drawing.Color.Blue).MCvScalar, 2);
               
            SetImageBitmap(image.ToBitmap());
            image.Dispose();

            if (CvInvoke.UseOpenCL)
               CvInvoke.OclFinish();
         };

         OnButtonClick += (sender, args) =>
         {
            PickImage("lena.jpg");
         };
      }