Настройка усиления и экспрессии без DisplayPropertyPage (Aforge, Directshow)

#web-config #webcam #directshow #aforge #webcam-capture

#web-config #Вебкам #directshow #aforge #веб-камера-захват

Вопрос:

может кто-нибудь сказать мне, как я могу изменить усиление или экспозицию с помощью directshow из Afroge.

Я уже пробовал то, что вы можете увидеть ниже, но безуспешно. Что я делаю не так?

Заранее спасибо

использование AForge.Видео; с использованием AForge.Видео.DirectShow;


VideoCaptureDevice VideoSource;

private void changeProp(значение int) { Видеоисточник.Установите свойство Cameraproperty(CameraControlProperty.Экспозиция, значение, флаги cameracontrol.Авто); }

Комментарии:

1. Привет. Вы нашли ответ?

Ответ №1:

Этот код работает для меня. Большая часть кода взята из примеров Afroge.

 private VideoCaptureDevice videoDevice;
private FilterInfoCollection videoDevices;
private VideoCapabilities[] videoCapabilities;

public Bool SetCamera(Cameras camera, int camDevice, CameraResolution camResolution,
        int exposureValue, int zoomValue, int focusValue)
    {
        // Enumerate video devices
        videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

        //Select camera according to specified index
        videoDevice = new VideoCaptureDevice(videoDevices[camDevice].MonikerString);

        //Get video capabilities for setting the resoluton
            videoCapabilities = videoDevice.VideoCapabilities;

            if (camera == Cameras.C910)
            {
                switch (camResolution)
                {
                    case CameraResolution.A_640x480:
                        videoDevice.VideoResolution = videoCapabilities[0];
                        break;
                    case CameraResolution.B_800x600:
                        videoDevice.VideoResolution = videoCapabilities[14];
                        break;
                    case CameraResolution.C_960x720:
                        videoDevice.VideoResolution = videoCapabilities[16];
                        break;
                    case CameraResolution.D_1280x720:
                        videoDevice.VideoResolution = videoCapabilities[17];
                        break;
                    case CameraResolution.E_1920x1080:
                        videoDevice.VideoResolution = videoCapabilities[24];
                        break;
                    default:
                        videoDevice.VideoResolution = videoCapabilities[0];
                        break;
                }

            }
            else if (camera == Cameras.C920)
            {
                switch (camResolution)
                {
                    case CameraResolution.A_640x480:
                        videoDevice.VideoResolution = videoCapabilities[0];
                        break;
                    case CameraResolution.B_800x600:
                        videoDevice.VideoResolution = videoCapabilities[10];
                        break;
                    case CameraResolution.C_960x720:
                        videoDevice.VideoResolution = videoCapabilities[12];
                        break;
                    case CameraResolution.D_1280x720:
                        videoDevice.VideoResolution = videoCapabilities[14];
                        break;
                    case CameraResolution.E_1920x1080:
                        videoDevice.VideoResolution = videoCapabilities[16];
                        break;
                    default:
                        videoDevice.VideoResolution = videoCapabilities[0];
                        break;
                }
            }
            else
            {
                videoDevice.VideoResolution = videoCapabilities[0];
            }

        try
        {   
            videoDevice.SetCameraProperty(
                CameraControlProperty.Zoom,
                zoomValue,
                CameraControlFlags.Manual);

            videoDevice.SetCameraProperty(
                CameraControlProperty.Focus,
                focusValue,
                CameraControlFlags.Manual);

            videoDevice.SetCameraProperty(
                CameraControlProperty.Exposure,
                exposureValue,
                CameraControlFlags.Manual);

        }
        catch (Exception ex)
        {
            MessageBox.show(ex.ToString());
        }
 

Комментарии:

1. Это потрясающе, но как мне сделать это из приложения UWP? Не похоже, что я могу использовать пакет nuget AForge, и по умолчанию возвращаются «Яркость», «Экспозиция» и т. Д. Как неподдерживаемые. Но это поддерживается в DirectShow. Так как же мне это сделать? Когда я пытаюсь вызвать DirectShow, он просто вылетает. Это камера UVC, и она отлично работает с DirectShow для изменения свойств камеры, но я не могу заставить ее работать в UWP. И на данный момент у меня довольно большое приложение, но я могу переписать его на C , если это единственный способ?