public void Init(PictureBox pb) { FilterInfoCollection VideoCaptuerDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); VideoCaptureDevice FinalVideoSource = new VideoCaptureDevice(VideoCaptuerDevices[0].MonikerString); FinalVideoSource.NewFrame += new NewFrameEventHandler((sender, eventArgs) => { Bitmap image = (Bitmap)eventArgs.Frame.Clone(); FaceHaarCascade cascade = new FaceHaarCascade(); HaarObjectDetector detector = new HaarObjectDetector(cascade, 80); detector.UseParallelProcessing = true; Rectangle[] faces = detector.ProcessFrame(image); Graphics g = Graphics.FromImage(image); foreach (var face in faces) { Pen p = new Pen(Color.Red, 10f); g.DrawRectangle(p, face); } g.Dispose(); pb.Image = image; }); FinalVideoSource.DesiredFrameRate = 1; FinalVideoSource.DesiredFrameSize = new Size(1, 500); FinalVideoSource.Start(); }
public static Rectangle detectFace(Bitmap bitmap) { var rectangle = new Rectangle(); var cascade = new FaceHaarCascade(); var detector = new HaarObjectDetector(cascade, 600); detector.SearchMode = ObjectDetectorSearchMode.Default; detector.ScalingFactor = 1.5F; detector.ScalingMode = ObjectDetectorScalingMode.SmallerToGreater; detector.UseParallelProcessing = true; detector.Suppression = 3; var faceObjects = detector.ProcessFrame(bitmap); var possbleFaces = new List <Rectangle>(); foreach (var face in faceObjects) { if (face.Width > 100 && face.Height > 100) { possbleFaces.Add(face); } } if (possbleFaces.Count > 0) { int x = possbleFaces.Sum((r) => r.X) / possbleFaces.Count; int y = possbleFaces.Sum((r) => r.Y) / possbleFaces.Count; int width = possbleFaces.Sum((r) => r.Width) / possbleFaces.Count; int height = possbleFaces.Sum((r) => r.Width) / possbleFaces.Count; rectangle = new Rectangle(x, y, width, height); } return(rectangle); }
public void ProcessFrame3() { HaarCascade cascade = new FaceHaarCascade(); HaarObjectDetector target = new HaarObjectDetector(cascade, 15, ObjectDetectorSearchMode.NoOverlap); Bitmap bmp = Properties.Resources.three; target.ProcessFrame(bmp); Assert.AreEqual(3, target.DetectedObjects.Length); Assert.AreEqual(180, target.DetectedObjects[0].X); Assert.AreEqual(275, target.DetectedObjects[0].Y); Assert.AreEqual(41, target.DetectedObjects[0].Width); Assert.AreEqual(41, target.DetectedObjects[0].Height); Assert.AreEqual(168, target.DetectedObjects[1].X); Assert.AreEqual(144, target.DetectedObjects[1].Y); Assert.AreEqual(49, target.DetectedObjects[1].Width); Assert.AreEqual(49, target.DetectedObjects[1].Height); Assert.AreEqual(392, target.DetectedObjects[2].X); Assert.AreEqual(133, target.DetectedObjects[2].Y); Assert.AreEqual(59, target.DetectedObjects[2].Width); Assert.AreEqual(59, target.DetectedObjects[2].Height); target = new HaarObjectDetector(cascade, 15, ObjectDetectorSearchMode.Single); target.ProcessFrame(bmp); Assert.AreEqual(1, target.DetectedObjects.Length); }
public void MaxSizeTest() { HaarCascade cascade = new FaceHaarCascade(); HaarObjectDetector target = new HaarObjectDetector(cascade, 50, ObjectDetectorSearchMode.Default); Bitmap bmp = Properties.Resources.lena_color; Rectangle[] result; target.MaxSize = new Size(10, 60); result = target.ProcessFrame(bmp); Assert.AreEqual(0, result.Length); target.MaxSize = new Size(60, 60); result = target.ProcessFrame(bmp); Assert.AreEqual(1, result.Length); foreach (var r in result) { Assert.IsTrue(r.Width <= target.MaxSize.Width); Assert.IsTrue(r.Height <= target.MaxSize.Height); } target.MaxSize = new Size(80, 80); result = target.ProcessFrame(bmp); Assert.AreEqual(2, result.Length); foreach (var r in result) { Assert.IsTrue(r.Width <= target.MaxSize.Width); Assert.IsTrue(r.Height <= target.MaxSize.Height); } }
public void ProcessFrame2() { HaarCascade cascade = new FaceHaarCascade(); HaarObjectDetector target = new HaarObjectDetector(cascade, 30, ObjectDetectorSearchMode.NoOverlap); Bitmap bmp = Properties.Resources.lena_gray; target.ProcessFrame(bmp); Assert.AreEqual(1, target.DetectedObjects.Length); Assert.AreEqual(255, target.DetectedObjects[0].X); Assert.AreEqual(225, target.DetectedObjects[0].Y); Assert.AreEqual(123, target.DetectedObjects[0].Width); Assert.AreEqual(123, target.DetectedObjects[0].Height); target = new HaarObjectDetector(cascade, 30, ObjectDetectorSearchMode.Default); target.ProcessFrame(bmp); Assert.AreEqual(6, target.DetectedObjects.Length); Assert.AreEqual(255, target.DetectedObjects[0].X); Assert.AreEqual(225, target.DetectedObjects[0].Y); Assert.AreEqual(123, target.DetectedObjects[0].Width); Assert.AreEqual(123, target.DetectedObjects[0].Height); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MainForm_Load(object sender, EventArgs e) { watch.Stop(); #region extracting icon from application to this form window Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath); #endregion #region Load default Mask Image if (File.Exists("mask.png")) { mask = LoadMask("mask.png"); } else { mask = Icon.ToBitmap(); } erase = new Bitmap(mask.Width, mask.Height, PixelFormat.Format32bppArgb); #endregion #region Add file(s) from command line args string[] flist = Environment.GetCommandLineArgs(); lvFiles.Items.Clear(); foreach (string f in flist) { if (PhotoExts.Contains(Path.GetExtension(f), StringComparer.CurrentCultureIgnoreCase)) { if (lvFiles.Items.Count == 0 || lvFiles.FindItemWithText(f, true, 0) == null) { ListViewItem fItem = new ListViewItem(new string[] { Path.GetFileName(f), f }); lvFiles.Items.Add(fItem); } } } #endregion picPreview.SizeMode = PictureBoxSizeMode.Zoom; picPreview.Image = photo; picMask.SizeMode = PictureBoxSizeMode.Zoom; picMask.Image = mask; cbMode.DataSource = Enum.GetValues(typeof(ObjectDetectorSearchMode)); cbScaling.DataSource = Enum.GetValues(typeof(ObjectDetectorScalingMode)); cbMode.SelectedItem = ObjectDetectorSearchMode.NoOverlap; cbScaling.SelectedItem = ObjectDetectorScalingMode.SmallerToGreater; SearchMode = ObjectDetectorSearchMode.NoOverlap; ScalingMode = ObjectDetectorScalingMode.SmallerToGreater; OutSize = (int)numOutSize.Value; faceSize = (int)numFaceSize.Value; GrayFirst = chkGrayDetect.Checked; HaarCascade cascade = new FaceHaarCascade(); detector = new HaarObjectDetector(cascade); }
public void ParseTest3() { HaarCascade cascade = new FaceHaarCascade(); Assert.AreEqual(22, cascade.Stages.Length); Assert.AreEqual(3, cascade.Stages[0].Trees.Length); Assert.AreEqual(1, cascade.Stages[0].Trees[0].Length); }
static void Main(string[] args) { ////ApplyBiTonal //Bitmap b = (Bitmap)Image.FromFile("test.png"); //Processor.ApplyBiTonal(ref b, (byte.MaxValue * 3) / 2, System.Drawing.Color.Red, System.Drawing.Color.White); //b.Save("result.png"); //WebClient wc = new WebClient(); //byte[] bytes = wc.DownloadData("https://lpportalvhds5rnqyvf495z0.blob.core.windows.net/imagger/408fcdc5-8e91-4dc9-ada8-87287c8cf77f-orinal.jpeg"); //MemoryStream ms = new MemoryStream(bytes); //Bitmap imageBitmap = new Bitmap(ms); //Processor.ApplyBrightness(ref imageBitmap, 100); ////Processor.ApplyBiTonal(ref imageBitmap, (byte.MaxValue * 3) / 2, System.Drawing.Color.Red, System.Drawing.Color.White); //imageBitmap.Save("result.png"); //WebClient wc = new WebClient(); //byte[] bytes = wc.DownloadData("https://lpportalvhds5rnqyvf495z0.blob.core.windows.net/imagger/157bed84-5f10-4f43-a5e5-7f0d146e3452-orinal.jpeg"); //MemoryStream ms = new MemoryStream(bytes); //Bitmap imageBitmap = new Bitmap(ms); //Processor.ApplyRandomJitter(ref imageBitmap, 20); //, System.Drawing.Color.Red, System.Drawing.Color.White); //imageBitmap.Save("result.png"); //Bitmap br = (Bitmap)Image.FromFile("test.png"); //Processor.ApplyBrightness(ref br, 100); //br.Save("result-br.png"); #region Detect faces WebClient wc = new WebClient(); byte[] bytes = wc.DownloadData("https://scontent-fra3-1.xx.fbcdn.net/v/t1.0-1/c0.46.200.200/1724176_10151691353752537_1722497807_n.jpg?oh=19d89af364674bd704cd38613135b4e1&oe=583097F3"); MemoryStream ms = new MemoryStream(bytes); Bitmap picture = new Bitmap(ms); HaarObjectDetector detector; HaarCascade cascade = new FaceHaarCascade(); detector = new HaarObjectDetector(cascade, 30); detector.SearchMode = ObjectDetectorSearchMode.NoOverlap; detector.ScalingMode = ObjectDetectorScalingMode.GreaterToSmaller; detector.ScalingFactor = 1.5f; detector.UseParallelProcessing = true; Rectangle[] objects = detector.ProcessFrame(picture); // RandomJitter.ApplyRandomJitterOnRectangulars(ref picture, 20, objects); // RandomJitter.ApplyRandomJitterOnRectangulars2(ref picture, 20, objects); RandomJitter.ApplyAddNoise(ref picture, objects); picture.Save("result.png"); // var p = RandomJitter.ApplyColorMatrix(picture, objects); //p.Save("result.png"); #endregion }
// Constructor public MainForm() { InitializeComponent(); HaarCascade cascade = new FaceHaarCascade(); detector = new HaarObjectDetector(cascade, 25, ObjectDetectorSearchMode.Single, 1.2f, ObjectDetectorScalingMode.GreaterToSmaller); }
public void ParseTest() { string fileName = Path.Combine(TestContext.CurrentContext.TestDirectory, "Resources", "haarcascade_frontalface_alt.xml"); HaarCascade cascade1 = HaarCascade.FromXml(new StreamReader(fileName)); Assert.AreEqual(22, cascade1.Stages.Length); Assert.AreEqual(3, cascade1.Stages[0].Trees.Length); Assert.AreEqual(1, cascade1.Stages[0].Trees[0].Length); Assert.AreEqual(false, cascade1.HasTiltedFeatures); // Load the hard coded version of the classifier HaarCascade cascade2 = new FaceHaarCascade(); Assert.AreEqual(cascade1.Stages.Length, cascade2.Stages.Length); Assert.AreEqual(cascade1.Height, cascade2.Height); Assert.AreEqual(cascade1.Width, cascade2.Width); for (int i = 0; i < 3; i++) { HaarCascadeStage stage1 = cascade1.Stages[i]; HaarCascadeStage stage2 = cascade2.Stages[i]; //Assert.AreEqual(stage1.NextIndex, stage2.NextIndex); //Assert.AreEqual(stage1.ParentIndex, stage2.ParentIndex); Assert.AreEqual(stage1.Threshold, stage2.Threshold); Assert.AreEqual(stage1.Trees.Length, stage2.Trees.Length); for (int j = 0; j < stage1.Trees.Length && j < stage2.Trees.Length; j++) { HaarFeatureNode[] tree1 = stage1.Trees[j]; HaarFeatureNode[] tree2 = stage2.Trees[j]; Assert.AreEqual(tree1.Length, tree2.Length); for (int k = 0; k < tree1.Length; k++) { HaarFeatureNode node1 = tree1[k]; HaarFeatureNode node2 = tree2[k]; Assert.AreEqual(node1.LeftNodeIndex, node2.LeftNodeIndex); Assert.AreEqual(node1.RightNodeIndex, node2.RightNodeIndex); Assert.AreEqual(node1.LeftValue, node2.LeftValue); Assert.AreEqual(node1.RightValue, node2.RightValue); Assert.AreEqual(node1.Feature.Tilted, node2.Feature.Tilted); Assert.AreEqual(node1.Threshold, node2.Threshold, 0.000000001); } } } }
public FaceDetector() { HaarCascade cascade = new FaceHaarCascade(); detector = new HaarObjectDetector(cascade, 30); detector.SearchMode = ObjectDetectorSearchMode.Default; detector.ScalingMode = ObjectDetectorScalingMode.GreaterToSmaller; detector.ScalingFactor = 1.1f; detector.UseParallelProcessing = true; detector.Suppression = 2; }
public void ProcessFrame() { HaarCascade cascade = new FaceHaarCascade(); HaarObjectDetector target = new HaarObjectDetector(cascade, 50, ObjectDetectorSearchMode.NoOverlap); Bitmap bmp = Properties.Resources.lena_color; target.ProcessFrame(bmp); Assert.AreEqual(1, target.DetectedObjects.Length); Assert.AreEqual(126, target.DetectedObjects[0].X); Assert.AreEqual(112, target.DetectedObjects[0].Y); Assert.AreEqual(59, target.DetectedObjects[0].Width); Assert.AreEqual(59, target.DetectedObjects[0].Height); }
public ImageController(PictureBox image) { this.image = image; /* * cbMode.DataSource = Enum.GetValues(typeof(ObjectDetectorSearchMode)); * cbScaling.DataSource = Enum.GetValues(typeof(ObjectDetectorScalingMode)); * * cbMode.SelectedItem = ObjectDetectorSearchMode.NoOverlap; * cbScaling.SelectedItem = ObjectDetectorScalingMode.SmallerToGreater; */ //toolStripStatusLabel1.Text = "Please select the detector options and click Detect to begin."; HaarCascade cascade = new FaceHaarCascade(); detector = new HaarObjectDetector(cascade, 30); }
public MainForm() { InitializeComponent(); pictureBox1.Image = picture; cbMode.DataSource = Enum.GetValues(typeof(ObjectDetectorSearchMode)); cbScaling.DataSource = Enum.GetValues(typeof(ObjectDetectorScalingMode)); cbMode.SelectedItem = ObjectDetectorSearchMode.NoOverlap; cbScaling.SelectedItem = ObjectDetectorScalingMode.SmallerToGreater; toolStripStatusLabel1.Text = "Please select the detector options and click Detect to begin."; HaarCascade cascade = new FaceHaarCascade(); detector = new HaarObjectDetector(cascade, 30); }
public void CloneTest() { HaarCascade expected = new FaceHaarCascade(); HaarCascade actual = (HaarCascade)expected.Clone(); Assert.AreNotEqual(expected, actual); Assert.AreEqual(expected.HasTiltedFeatures, actual.HasTiltedFeatures); Assert.AreEqual(expected.Height, actual.Height); Assert.AreEqual(expected.Width, actual.Width); Assert.AreNotEqual(expected.Stages, actual.Stages); Assert.AreEqual(expected.Stages.Length, actual.Stages.Length); for (int i = 0; i < expected.Stages.Length; i++) { equals(expected.Stages[i], actual.Stages[i]); } }
public Tracking_face() { InitializeComponent(); try { // enumerate video devices videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (videoDevices.Count == 0) { throw new ApplicationException(); } // add all devices to combo foreach (FilterInfo device in videoDevices) { devicesCombo.Items.Add(device.Name); } HaarCascade cascade = new FaceHaarCascade(); detector = new HaarObjectDetector(cascade, 25, ObjectDetectorSearchMode.Single, 1.2f, ObjectDetectorScalingMode.GreaterToSmaller); } catch (ApplicationException) { devicesCombo.Items.Add("No local capture devices"); devicesCombo.Enabled = false; } devicesCombo.SelectedIndex = 1; // create video source VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[devicesCombo.SelectedIndex].MonikerString); // set frame size videoSource.VideoResolution = selectResolution(videoSource); // open it OpenVideoSource(videoSource); detecting = true; }
public static string DetectFace(string path) { GetPicture(path); // Process frame to detect objects HaarCascade cascade = new FaceHaarCascade(); HaarObjectDetector detector = new HaarObjectDetector(cascade, 30); detector.SearchMode = (ObjectDetectorSearchMode)cbMode; detector.ScalingMode = (ObjectDetectorScalingMode)cbScaling; detector.ScalingFactor = 1.5f; Stopwatch sw = Stopwatch.StartNew(); Rectangle[] objects = detector.ProcessFrame(picture); sw.Stop(); if (objects.Length > 0) { Console.WriteLine("here"); RectanglesMarker marker = new RectanglesMarker(objects, Color.Fuchsia); picture = marker.Apply(picture); } if (picture != null) { Console.WriteLine("trying to print picture"); /*ImageCodecInfo myici = ImageCodecInfo.GetImageEncoders(); * int numCodecs = myici.GetLength(0); * Encoder myEncoder = Encoder.Quality; * EncoderParameters param = new EncoderParameters(1); * EncoderParameter param1 = new EncoderParameter(myEncoder, 25L); * * picture.Save(@"output.jpg", myici, param); */ picture.Save("file.png", ImageFormat.Png);; } return(path); }
public static void Main(string[] args) { var picture = Resource.lena_color; HaarCascade cascade = new FaceHaarCascade(); var detector = new HaarObjectDetector(cascade, 30); //detector.SearchMode = ObjectDetectorSearchMode.Average; //detector.ScalingMode = ObjectDetectorScalingMode.GreaterToSmaller; //detector.ScalingFactor = 1.5f; //detector.UseParallelProcessing = false; //detector.Suppression = 2; Rectangle[] objects = detector.ProcessFrame(picture); if (objects.Length > 0) { RectanglesMarker marker = new RectanglesMarker(objects, Color.Fuchsia); var markedup = marker.Apply(picture); markedup.Save($"{basedir}{sep}{sep}markedup.jpg"); } }
//+mainWinForm(): Constructor, gets parts initialized public mainWinForm() { SetStyle(ControlStyles.SupportsTransparentBackColor, true); data = new FileHandler(); InitializeComponent(); this.bntStart.Enabled = false; this.bntStop.Enabled = false; this.recordBtn.Enabled = false; this.capture.Enabled = false; this.send.Enabled = false; this.bntVideoSource.Enabled = false; this.userInput.Enabled = false; this.mic.SelectedIndexChanged += mic_SelectedIndexChanged; Log("[Software Started]"); Log("[Components initialized]"); this.cascade = new FaceHaarCascade(); this.detector = new HaarObjectDetector(cascade, minSize: 50, searchMode: ObjectDetectorSearchMode.NoOverlap); Log(">Please choose an audio source."); }
public void MinSizeTest() { HaarCascade cascade = new FaceHaarCascade(); HaarObjectDetector target = new HaarObjectDetector(cascade, 50, ObjectDetectorSearchMode.Default); Bitmap bmp = Accord.Imaging.Image.Clone(Resources.lena_color); Rectangle[] result; target.MinSize = new Size(10, 60); result = target.ProcessFrame(bmp); Assert.AreEqual(3, result.Length); foreach (var r in result) { Assert.IsTrue(r.Width >= target.MinSize.Width); Assert.IsTrue(r.Height >= target.MinSize.Height); } target.MinSize = new Size(85, 85); result = target.ProcessFrame(bmp); Assert.AreEqual(2, result.Length); foreach (var r in result) { Assert.IsTrue(r.Width >= target.MinSize.Width); Assert.IsTrue(r.Height >= target.MinSize.Height); } target.MinSize = new Size(1, 1); result = target.ProcessFrame(bmp); Assert.AreEqual(4, result.Length); foreach (var r in result) { Assert.IsTrue(r.Width >= target.MinSize.Width); Assert.IsTrue(r.Height >= target.MinSize.Height); } }
public void ProcessFrame3() { HaarCascade cascade = new FaceHaarCascade(); HaarObjectDetector target = new HaarObjectDetector(cascade, 15, ObjectDetectorSearchMode.NoOverlap); Bitmap bmp = Accord.Imaging.Image.Clone(Resources.three); target.ProcessFrame(bmp); Assert.AreEqual(2, target.DetectedObjects.Length); int i = 0; /* Assert.AreEqual(180, target.DetectedObjects[0].X); * Assert.AreEqual(275, target.DetectedObjects[0].Y); * Assert.AreEqual(41, target.DetectedObjects[0].Width); * Assert.AreEqual(41, target.DetectedObjects[0].Height); */ Assert.AreEqual(168, target.DetectedObjects[i].X); Assert.AreEqual(144, target.DetectedObjects[i].Y); Assert.AreEqual(49, target.DetectedObjects[i].Width); Assert.AreEqual(49, target.DetectedObjects[i].Height); i++; Assert.AreEqual(392, target.DetectedObjects[i].X); Assert.AreEqual(133, target.DetectedObjects[i].Y); Assert.AreEqual(59, target.DetectedObjects[i].Width); Assert.AreEqual(59, target.DetectedObjects[i].Height); target = new HaarObjectDetector(cascade, 15, ObjectDetectorSearchMode.Single); target.ProcessFrame(bmp); Assert.AreEqual(1, target.DetectedObjects.Length); }
private async void MainWindow_Loaded(object sender, RoutedEventArgs e) { // Wait for the client to get setup await Task.Delay(5000); // Setup Socket Client Client = new TcpClient(); Client.Connect(IPAddress.Parse("10.10.10.100"), 1911); ClientStream = Client.GetStream(); // enumerate video devices videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); // create video source videoSource = new VideoCaptureDevice(videoDevices[1].MonikerString); videoSource.SnapshotResolution = videoSource.VideoCapabilities[7]; // set NewFrame event handler videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame); // Setup Face Detection Cascade = new FaceHaarCascade(); Detector = new HaarObjectDetector(Cascade, 30); Detector.SearchMode = ObjectDetectorSearchMode.Average; //Detector.ScalingFactor = 1f; Detector.ScalingMode = ObjectDetectorScalingMode.GreaterToSmaller; Detector.UseParallelProcessing = true; Detector.Suppression = 3; // Setup Tracking Data CameraVector.X = 90; CameraVector.Y = 90; //ClientStream.Write(Encoding.UTF8.GetBytes("090,090"), 0, 7); //await Task.Delay(3000); // start the video source videoSource.Start(); }
static void Main(string[] args) { String outputDir = "H:\\Temp\\"; UserCredential credential; FaceHaarCascade cascade = new FaceHaarCascade(); HaarObjectDetector detector = new HaarObjectDetector(cascade); detector.SearchMode = ObjectDetectorSearchMode.Average; detector.ScalingFactor = 1.5F; detector.ScalingMode = ObjectDetectorScalingMode.GreaterToSmaller;; detector.UseParallelProcessing = true; detector.Suppression = 3; using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) { string credPath = System.Environment.GetFolderPath( System.Environment.SpecialFolder.Personal); credPath = Path.Combine(credPath, ".credentials/gmail-dotnet-quickstart.json"); credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } // Create Gmail API service. var service = new GmailService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); // Define parameters of request. UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List("me"); request.Q = "has:attachment"; // List labels. IList <Message> messages = request.Execute().Messages; Console.WriteLine("Messages:"); if (messages != null && messages.Count > 0) { foreach (var messageItem in messages) { //Console.WriteLine("{0}", messageItem.Id); Message message = service.Users.Messages.Get("me", messageItem.Id).Execute(); Console.WriteLine(message.Payload.MimeType.ToString()); IList <MessagePart> parts = message.Payload.Parts; foreach (MessagePart part in parts) { if (!String.IsNullOrEmpty(part.Filename)) { String attId = part.Body.AttachmentId; MessagePartBody attachPart = service.Users.Messages.Attachments.Get("me", messageItem.Id, attId).Execute(); Console.WriteLine(part.Filename); // Converting from RFC 4648 base64 to base64url encoding // see http://en.wikipedia.org/wiki/Base64#Implementations_and_history String attachData = attachPart.Data.Replace('-', '+'); attachData = attachData.Replace('_', '/'); byte[] data = Convert.FromBase64String(attachData); MemoryStream ms = new MemoryStream(data); Bitmap img = new Bitmap(Image.FromStream(ms)); Rectangle[] rects = detector.ProcessFrame(img); if (rects.Count() > 0) { Console.WriteLine("Face detected!!!!"); File.WriteAllBytes(Path.Combine(outputDir, part.Filename), data); } } } } } else { Console.WriteLine("No messages found."); } Console.Read(); }
public AccordFaceDetector(Bitmap image1) { Accord.Vision.Detection.HaarCascade cascade = new FaceHaarCascade(); _detector = new HaarObjectDetector(cascade, 30); image = image1; }
public ViolaJonesFaceDetector(Profile profile, params Type[] clients) : base(profile, clients) { Cascade = new FaceHaarCascade(); Detector = new HaarObjectDetector(Cascade, 30); Status = ApiStatus.Initializing; }
private static void Process(string imagePath) { try { var cascade = new FaceHaarCascade(); var detector = new HaarObjectDetector(cascade, _varHaarMinSize); detector.SearchMode = (ObjectDetectorSearchMode)_varHaarSearchMode; detector.ScalingFactor = _varHaarScalingFact; detector.ScalingMode = (ObjectDetectorScalingMode)_varHaarScalingMode; detector.UseParallelProcessing = _varHaarParallel; detector.Suppression = _varHaarSuppression; using (var img = Image.FromFile(imagePath)) { using (var bmp = new Bitmap(img)) { var sw = Stopwatch.StartNew(); var faceObjects = detector.ProcessFrame(bmp); sw.Stop(); LogMessage(string.Format("Detected {0} faces", faceObjects.Length)); foreach (var f in faceObjects) { Bitmap bmpImage = new Bitmap(img); bmpImage = bmp.Clone(new Rectangle(f.Location, f.Size), bmpImage.PixelFormat); string outPath = Path.Combine(_varDestFolder, _varDestPrefix + (++numImages).ToString("00000") + "." + _varDestFileType); LogMessage("Output file " + outPath); ImageFormat imageFormat = ImageFormat.Png; switch (_varDestFileType.ToLower()) { case "png": imageFormat = ImageFormat.Png; break; case "jpg": case "jpeg": imageFormat = ImageFormat.Jpeg; break; case "bmp": imageFormat = ImageFormat.Bmp; break; } using (var resized = ResizeImage(bmpImage, _varDestSize, _varDestSize)) { resized.Save(outPath, imageFormat); } bmpImage.Dispose(); } } } } catch (Exception ex) { LogMessage("Error processing file " + imagePath + "\n" + ex.Message); } }