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)); } }; }
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); }
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; }
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"); }; }
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"); }; }
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); }
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; }
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"); }; }