public FaceMaskDetectorTest()
        {
            faceMaskDetector = new FaceMaskDetector();
            string programPath = AppDomain.CurrentDomain.BaseDirectory;

            imageFolder = Path.Combine(programPath, "Image", "FaceMaskDetector");
        }
        public FaceDetectionWebAPITest()
        {
            faceDetector     = new FaceDetector();
            faceMaskDetector = new FaceMaskDetector();
            controller       = new FaceDetectorController(faceDetector, faceMaskDetector);
            string programPath = AppDomain.CurrentDomain.BaseDirectory;

            imageFolder = Path.Combine(programPath, "Image", "FaceDetector");
        }
Ejemplo n.º 3
0
        public static IEnumerable <FaceModel> FaceAnalysis(FaceMaskDetector faceMaskDetector, byte[] imageData, IEnumerable <FaceRectangle> faceRectangles, bool mask)
        {
            if (mask)
            {
                IEnumerable <Rectangle> rectangles = faceRectangles.Select(faceRectangle => new Rectangle(faceRectangle.Top, faceRectangle.Left, faceRectangle.Width, faceRectangle.Height));
                IEnumerable <Bitmap>    faces      = rectangles.Select(rectangle => FaceDetector.GetFaceImage(imageData, rectangle).ToBitmap());
                IEnumerable <bool>      isMasks    = faceMaskDetector.Detect(faces);

                return(faceRectangles.Zip(isMasks, (faceRectangle, isMask) => new FaceModel {
                    FaceRectangle = faceRectangle, FaceAttributes = new FaceAttributes {
                        IsMask = isMask
                    }
                }));
            }

            return(faceRectangles.Select(faceRectangle => new FaceModel {
                FaceRectangle = faceRectangle, FaceAttributes = new FaceAttributes()
            }));
        }
 public FaceDetectorController(FaceDetector faceDetector, FaceMaskDetector faceMaskDetector)
 {
     this.faceDetector     = faceDetector;
     this.faceMaskDetector = faceMaskDetector;
 }
Ejemplo n.º 5
0
        private async Task Echo(HttpContext context, WebSocket webSocket, FaceDetector faceDetector, FaceMaskDetector faceMaskDetector)
        {
            var buffer = new byte[1024 * 1024 * 4];
            WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None);

            while (!result.CloseStatus.HasValue)
            {
                byte[] imageData = buffer[..result.Count];
Ejemplo n.º 6
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, FaceDetector faceDetector, FaceMaskDetector faceMaskDetector)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            var webSocketOptions = new WebSocketOptions()
            {
                KeepAliveInterval = TimeSpan.FromSeconds(120),
                ReceiveBufferSize = 4 * 1024 * 1024
            };

            app.UseWebSockets(webSocketOptions);

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            app.Use(async(context, next) =>
            {
                if (context.Request.Path == "/ws")
                {
                    if (context.WebSockets.IsWebSocketRequest)
                    {
                        WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
                        await Echo(context, webSocket, faceDetector, faceMaskDetector);
                    }
                    else
                    {
                        context.Response.StatusCode = 400;
                    }
                }
                else
                {
                    await next();
                }
            });
        }
Ejemplo n.º 7
0
 public Form1()
 {
     InitializeComponent();
     faceDetection    = new FaceDetector();
     faceMaskDetector = new FaceMaskDetector();
 }