Skip to content

Instantly share code, notes, and snippets.

@geoffreysmith
Created March 25, 2014 20:42

Revisions

  1. geoffreysmith revised this gist Mar 25, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion gistfile1.cs
    Original file line number Diff line number Diff line change
    @@ -40,7 +40,7 @@ private Bitmap DetectFact(Image imageFromBitmap)
    var imageBitmap = new Bitmap(imageFromBitmap);
    var image = new Image<Bgr, byte>(imageBitmap);
    var gray = image.Convert<Gray, Byte>();
    var face = new HaarCascade("C:\\_SITES\\ussoccer\\Website\\haarcascade_frontalface_default.xml");
    var face = new HaarCascade("haarcascade_frontalface_default.xml");

    var facesDetected = gray.DetectHaarCascade(face, 1.1, 4, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20));

  2. geoffreysmith created this gist Mar 25, 2014.
    66 changes: 66 additions & 0 deletions gistfile1.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,66 @@
    public class MediaRequestOverride : MediaProvider
    {
    public override Media GetMedia(MediaUri mediaUri)
    {
    var mediaData = GetMediaData(mediaUri);
    var media = GetMedia(mediaData);

    return GetMediaFace(media);

    }
    public override Media GetMedia(MediaItem item)
    {
    var mediaData = GetMediaData(item);
    var media = GetMedia(mediaData);

    return GetMediaFace(media);
    }

    public Media GetMediaFace(Media media)
    {
    using (new SecurityDisabler())
    {
    var stream = media.GetStream();

    var resultingBitmap = DetectFact(Image.FromStream(stream.Stream));

    if (resultingBitmap == null)
    return media;

    var memoryStream = new MemoryStream();
    resultingBitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);

    media.SetStream(memoryStream, "jpeg");
    }
    return media;
    }

    private Bitmap DetectFact(Image imageFromBitmap)
    {
    var imageBitmap = new Bitmap(imageFromBitmap);
    var image = new Image<Bgr, byte>(imageBitmap);
    var gray = image.Convert<Gray, Byte>();
    var face = new HaarCascade("C:\\_SITES\\ussoccer\\Website\\haarcascade_frontalface_default.xml");

    var facesDetected = gray.DetectHaarCascade(face, 1.1, 4, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(20, 20));

    Graphics g= null;

    foreach (var f in facesDetected[0])
    {
    using (g = Graphics.FromImage(imageBitmap))
    {
    g.DrawRectangle(new Pen(Color.Red, 5), f.rect);
    g.Save();
    }

    break;
    }

    if (g != null)
    return imageBitmap;

    return null;

    }
    }