刚接触AForge.NET,求大神指点[align=left],如何去配置我自己的摄像头的亮度等参数。第一次发帖,求助大家了。         VideoCaptureDevice UsbVideo;
        private void Form1_Load(object sender, EventArgs e)
        {
            
            FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.Vi[/align]deoInputDevice);
            if (videoDevices.Count > 0)
            { 
                UsbVideo = new VideoCaptureDevice(videoDevices[1].MonikerString);                sourcePlayer.VideoSource = UsbVideo;
                UsbVideo.VideoResolution = UsbVideo.VideoCapabilities[0];
                sourcePlayer.Start();
            }
            else
            {
            }
        }

解决方案 »

  1.   

    你看看这个
    http://blog.csdn.net/libby1984/article/details/51454516
      

  2.   

    你看看这个
    http://blog.csdn.net/libby1984/article/details/51454516 
      

  3.   

    AForge.directshow本来就没有修改视频亮度和对比度的方法,想要实现这个方法,可以在源码中:加上这段代码:
    public bool SetCameraProcAmp(VideoProcAmpProperty property, int value, VideoProcAmpFlags controlFlags)
            {
                bool ret = true;            // check if source was set
                if ((deviceMoniker == null) || (string.IsNullOrEmpty(deviceMoniker)))
                {
                    throw new ArgumentException("Video source is not specified.");
                }            lock (sync)
                {
                    object tempSourceObject = null;                // create source device's object
                    try
                    {
                        tempSourceObject = FilterInfo.CreateFilter(deviceMoniker);
                    }
                    catch
                    {
                        throw new ApplicationException("Failed creating device object for moniker.");
                    }                if (!(tempSourceObject is IAMCameraControl))
                    {
                        throw new NotSupportedException("The video source does not support camera control.");
                    }                IAMVideoProcAmp videoProcAmp = (IAMVideoProcAmp)tempSourceObject;
                    int hr = videoProcAmp.Set(property, value, controlFlags);                ret = (hr >= 0);                Marshal.ReleaseComObject(tempSourceObject);
                }            return ret;
            }
    其中使用的一些类和枚举类型:
     /// <summary>
        /// From VideoProcAmpProperty
        /// </summary>
        public enum VideoProcAmpProperty
        {
            /// <summary>
            /// 亮度
            /// </summary>
            Brightness,
            /// <summary>
            /// 对比度
            /// </summary>
            Contrast,
            /// <summary>
            /// 色相
            /// </summary>
            Hue,
            /// <summary>
            /// 饱和度
            /// </summary>
            Saturation,
            /// <summary>
            /// 清晰度
            /// </summary>
            Sharpness,
            /// <summary>
            /// 伽马
            /// </summary>
            Gamma,
            /// <summary>
            /// 启用颜色
            /// </summary>
            ColorEnable,
            /// <summary>
            /// 白平衡
            /// </summary>
            WhiteBalance,
            /// <summary>
            /// 逆光对比
            /// </summary>
            BacklightCompensation,
            /// <summary>
            /// 增益
            /// </summary>
            Gain
        }
        /// <summary>
        /// From VideoProcAmpFlags
        /// </summary>
        [Flags]
        public enum VideoProcAmpFlags
        {
            /// <summary>
            /// 默认
            /// </summary>
            None = 0,
            /// <summary>
            /// 自动
            /// </summary>
            Auto = 0x0001,
            /// <summary>
            /// 手动
            /// </summary>
            Manual = 0x0002
        }
    [ComImport, System.Security.SuppressUnmanagedCodeSecurity,
        Guid("C6E13360-30AC-11d0-A18C-00A0C9118956"),
        InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        interface IAMVideoProcAmp
        {
            [PreserveSig]
            int GetRange(
                [In] VideoProcAmpProperty Property,
                [Out] out int pMin,
                [Out] out int pMax,
                [Out] out int pSteppingDelta,
                [Out] out int pDefault,
                [Out] out VideoProcAmpFlags pCapsFlags
                );        [PreserveSig]
            int Set(
                [In] VideoProcAmpProperty Property,
                [In] int lValue,
                [In] VideoProcAmpFlags Flags
                );        [PreserveSig]
            int Get(
                [In] VideoProcAmpProperty Property,
                [Out] out int lValue,
                [Out] out VideoProcAmpFlags Flags
                );
        }