Пример #1
0
    public void StartStreaming(bool recogniseFacialFeatures, Point location)
    {
        if (FSDKCam.OpenVideoCamera(ref cameraName, ref cameraHandle) != FSDK.FSDKE_OK)
        {
            MessageBox.Show(Constants.CAMERA_OPEN_ERROR, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            Application.Exit();
        }

        FaceRecognitionController faceRecognitionController = new FaceRecognitionController();

        faceRecognitionController.Initialize(location);

        cameraWorking = true;

        while (cameraWorking)
        {
            Application.DoEvents();
            Int32 imageHandle = 0;
            FSDKCam.GrabFrame(cameraHandle, ref imageHandle);
            FSDK.CImage image      = new FSDK.CImage(imageHandle);
            Image       frameImage = image.ToCLRImage();

            faceRecognitionController.Update(image, frameImage, recogniseFacialFeatures);

            currentPictureBox.Image = frameImage;
            GC.Collect();
        }

        faceRecognitionController.Stop();

        FSDKCam.CloseVideoCamera(cameraHandle);
        FSDKCam.FinalizeCapturing();
    }
Пример #2
0
    public void InitializeCamera(PictureBox pictureBox)
    {
        faceRecognitionController = new FaceRecognitionController();
        currentPictureBox         = pictureBox;

        if (FSDK.FSDKE_OK != FSDK.ActivateLibrary(Constants.LICENCE_KEY))
        {
            MessageBox.Show(Constants.ERROR_ACTIVATING_FACESDK, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            Application.Exit();
        }

        FSDK.InitializeLibrary();
        FSDKCam.InitializeCapturing();

        string[] cameraList;
        int      cameraCount;

        FSDKCam.GetCameraList(out cameraList, out cameraCount);

        if (cameraCount == 0)
        {
            MessageBox.Show(Constants.NO_CAMERA_ERROR, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            Application.Exit();
        }

        cameraName = cameraList[0];
        FSDKCam.GetVideoFormatList(ref cameraName, out formatList, out cameraCount);

        int videoFormat = 0;

        currentPictureBox.Width  = formatList[videoFormat].Width;
        currentPictureBox.Height = formatList[videoFormat].Height;
    }
        public async Task RecognizeWithStreamAsync_WithoutStream_ReturnsBadRequest()
        {
            var mockLogger            = Mock.Of <ILogger <FaceRecognitionController> >();
            var mockFaceClientService = Mock.Of <IFaceClientService>();

            var controller   = new FaceRecognitionController(mockFaceClientService, mockLogger);
            var actionResult = await controller.RecognizeWithStreamAsync(default);
        public async Task RecognizeWithStreamAsync_WithCorrectInput_ReturnsOk()
        {
            var list = new List <RecognizedCandidateDto>
            {
                new RecognizedCandidateDto {
                    Confidence = 0.54, PersonId = $"{Guid.NewGuid()}"
                },
                new RecognizedCandidateDto {
                    Confidence = 0.99, PersonId = $"{Guid.NewGuid()}"
                },
                new RecognizedCandidateDto {
                    Confidence = 0.89, PersonId = $"{Guid.NewGuid()}"
                }
            };

            var mockLogger            = Mock.Of <ILogger <FaceRecognitionController> >();
            var mockFaceClientService = new Mock <IFaceClientService>();

            mockFaceClientService
            .Setup(service => service.RecognizeWithStreamAsync(It.IsNotNull <Stream>()))
            .Returns(() => Task.FromResult((IList <RecognizedCandidateDto>)list));

            using var stream = File.OpenRead("jrtest.jpg");
            var controller   = new FaceRecognitionController(mockFaceClientService.Object, mockLogger);
            var actionResult = await controller.RecognizeWithStreamAsync(stream);

            Assert.NotNull(actionResult);
            var okObjectResult = Assert.IsAssignableFrom <OkObjectResult>(actionResult);

            var result = Assert.IsAssignableFrom <IList <RecognizedCandidateDto> >(okObjectResult.Value);

            list.Should().NotBeEmpty()
            .And.BeEquivalentTo(result);
        }
        public async Task RecognizeWithStreamAsync_WithUnrelatedStream_ReturnsOk()
        {
            var mockLogger            = Mock.Of <ILogger <FaceRecognitionController> >();
            var mockFaceClientService = new Mock <IFaceClientService>();

            mockFaceClientService
            .Setup(service => service.RecognizeWithStreamAsync(It.IsNotNull <Stream>()));

            using var stream = new MemoryStream();
            var controller   = new FaceRecognitionController(mockFaceClientService.Object, mockLogger);
            var actionResult = await controller.RecognizeWithStreamAsync(stream);

            Assert.NotNull(actionResult);
            var okObjectResult = Assert.IsAssignableFrom <OkObjectResult>(actionResult);

            var result = Assert.IsAssignableFrom <IList <RecognizedCandidateDto> >(okObjectResult.Value);

            Assert.NotNull(result);
            Assert.Empty(result);
        }
Пример #6
0
        public static UnityContainer RegisterComponents()
        {
            var container = new UnityContainer();

            container.RegisterSingleton <DataSources.IDataSource>(
                new InjectionFactory(o => { return(new LocalDataSource()); }));

            container.RegisterSingleton <IAsyncDataSource>(
                new InjectionFactory(o =>
            {
                var dbContext = new LibraryDbContext();
                return(new DbDataSource(dbContext));
            }));

            container.RegisterSingleton <IUserRepository>(new InjectionFactory(o =>
            {
                var dataSource = container.Resolve <IAsyncDataSource>();
                return(new UserRepository(dataSource));
            }));

            container.RegisterSingleton <IBookRepository>(new InjectionFactory(o =>
            {
                var dataSource = container.Resolve <IAsyncDataSource>();
                return(new BookRepository(dataSource));
            }));

            container.RegisterSingleton <IReviewRepository>(new InjectionFactory(o =>
            {
                var dataSource = container.Resolve <IAsyncDataSource>();
                return(new ReviewRepository(dataSource));
            }));

            container.RegisterSingleton <ILibraryData>(new InjectionFactory(o =>
            {
                var userRepository = container.Resolve <IUserRepository>();
                var bookRepository = container.Resolve <IBookRepository>();
                return(new LibraryData(userRepository, bookRepository));
            }));

            //Controllers


            container.RegisterType <UserRegistrationController>(new InjectionFactory(o =>
            {
                var userRepository = container.Resolve <IUserRepository>();
                var inputValidator = container.Resolve <IInputValidator>();
                return(new UserRegistrationController(userRepository, inputValidator));
            }));

            container.RegisterType <BarcodeScannerController>(new InjectionFactory(o =>
            {
                var takenBookPresenter = container.Resolve <TakenBookPresenter>();
                var bookPresenter      = container.Resolve <BookPresenter>();
                var scannerPresenter   = container.Resolve <ScannerPresenter>();
                return(new BarcodeScannerController(takenBookPresenter, bookPresenter, scannerPresenter));
            }));

            container.RegisterType <UserSignInController>(new InjectionFactory(o =>
            {
                var userRepository  = container.Resolve <IUserRepository>();
                var controller      = new UserSignInController(userRepository);
                controller.OnLogin += userRepository.Login;
                return(controller);
            }));

            container.RegisterType <TakenBookController>(new InjectionFactory(o =>
            {
                var takenBookPresenter = container.Resolve <TakenBookPresenter>();
                var bookPresenter      = container.Resolve <BookPresenter>();
                var scannerPresenter   = container.Resolve <ScannerPresenter>();
                return(new TakenBookController(takenBookPresenter, bookPresenter, scannerPresenter));
            }));

            container.RegisterType <ReturnBookController>(new InjectionFactory(o =>
            {
                var takenBookPresenter = container.Resolve <TakenBookPresenter>();
                return(new ReturnBookController(takenBookPresenter));
            }));

            container.RegisterType <BookController>(new InjectionFactory(o =>
            {
                var bookPresenter = container.Resolve <BookPresenter>();
                return(new BookController(bookPresenter));
            }));

            container.RegisterType <BookHistoryController>(new InjectionFactory(o =>
            {
                var bookPresenter = container.Resolve <BookPresenter>();
                return(new BookHistoryController(bookPresenter));
            }));

            container.RegisterType <HashtagController>(new InjectionFactory(o =>
            {
                var dataSource  = container.Resolve <IAsyncDataSource>();
                var hashtagRepo = new HastagRepository(dataSource);
                return(new HashtagController(hashtagRepo));
            }));

            container.RegisterType <GenreController>(new InjectionFactory(o =>
            {
                var dataSource = container.Resolve <IAsyncDataSource>();
                var genreRepo  = new GenreRepository(dataSource);
                return(new GenreController(genreRepo));
            }));

            container.RegisterType <FaceDetectionController>(new InjectionFactory(o =>
            {
                return(new FaceDetectionController());
            }));

            container.RegisterType <ImageSavingController>(new InjectionFactory(o =>
            {
                var dataSource = container.Resolve <IAsyncDataSource>();
                return(new ImageSavingController(dataSource));
            }));

            container.RegisterType <FaceRecognitionController>(new InjectionFactory(o =>
            {
                var dataSource      = container.Resolve <IAsyncDataSource>();
                var controller      = new FaceRecognitionController(dataSource);
                controller.OnLogin += container.Resolve <IUserRepository>().Login;
                return(controller);
            }));

            container.RegisterType <ReviewController>(new InjectionFactory(o =>
            {
                var reviewRepository = container.Resolve <IReviewRepository>();
                var reviewPresenter  = container.Resolve <ReviewPresenter>();
                return(new ReviewController(reviewPresenter, reviewRepository));
            }));


            // Helpers & Presenters
            container.RegisterType <TakenBookPresenter>(new InjectionFactory(o =>
            {
                var bookRepository = container.Resolve <IBookRepository>();
                var warning        = container.Resolve <BookTakingWarning>();
                var userPresenter  = container.Resolve <UserPresenter>();
                //return new TakenBookPresenter(bookRepository, warning, userPresenter);
                return(new TakenBookPresenter(bookRepository));
            }));

            container.RegisterType <BookPresenter>(new InjectionFactory(o =>
            {
                var bookRepository = container.Resolve <IBookRepository>();
                return(new BookPresenter(bookRepository));
            }));

            container.RegisterType <ReviewPresenter>(new InjectionFactory(o =>
            {
                var reviewRepository = container.Resolve <IReviewRepository>();
                return(new ReviewPresenter(reviewRepository));
            }));

            container.RegisterType <UserPresenter>(new InjectionFactory(o =>
            {
                var userRepository = container.Resolve <IUserRepository>();
                return(new UserPresenter(userRepository));
            }));


            container.RegisterType <IInputValidator>(new InjectionFactory(o =>
            {
                var userRepository = container.Resolve <IUserRepository>();
                return(new InputValidator(userRepository));
            }));

            return(container);
        }