using AForge.Controls; using AForge.Video.DirectShow; namespace shjxCamera { public class InterfaceCamera { //public void PresetLightParam(WebCamera WebCam, VideoCaptureDevice vidCapDevice, VideoSourcePlayer vidPlayer) //{ // ColorDataGraber colorDataGraber = new ColorDataGraber(WebCam); // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Brightness, 125, VideoProcAmpFlags.Manual); // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Contrast, 255, VideoProcAmpFlags.Manual); // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Sharpness, 0, VideoProcAmpFlags.Manual); // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Gain, 0, VideoProcAmpFlags.Manual); // WebCam.GetPropertiesRange(CameraControlProperty.Exposure, out var min, out var max, out var size, out var value, out var flag); // Thread.Sleep(1000); // // 读取信号值 // var cdp = colorDataGraber.GrabSignal(500); // // 判断信号所在区间,小于额定值范围则缩小曝光值,大于额定范围则增大曝光值 // CameraControlFlags flags = CameraControlFlags.Manual; // WebCam.GetProperties(CameraControlProperty.Exposure, out int val, out flags); // int maxcount = 10; // double bsvBelow = 0.0; // double bsvUp = 0.0; // int valBelow = 0; // int valUp = 0; // double bsv = 0.0; // bool flagJudge = true; ; // while (maxcount > 0) // { // maxcount--; // bsv = cdp.GetBSV(); // if (bsv < 120) // { // bsvBelow = bsv; // if (val.Equals(min)) // break; // val = Math.Min(max, Math.Max(-9, val - 1)); // valBelow = val; // WebCam.SetProperties(CameraControlProperty.Exposure, val, CameraControlFlags.Manual); // Thread.Sleep(500); // colorDataGraber.UpdateRoiPos(false); // } // else if (bsv > 130) // { // bsvUp = bsv; // if (val.Equals(max)) break; // val = Math.Min(max, Math.Max(-9, val + 1)); // valUp = val; // WebCam.SetProperties(CameraControlProperty.Exposure, val, CameraControlFlags.Manual); // Thread.Sleep(500); // colorDataGraber.UpdateRoiPos(false); // } // else // { // flagJudge = false; ; // break; // } // cdp = colorDataGraber.GrabSignal(500); // } // if (flagJudge) // { // val = 125 - bsvBelow > bsvUp - 125 ? valBelow : valUp; // val = Math.Min(max, Math.Max(-9, val)); // WebCam.SetProperties(CameraControlProperty.Exposure, val, CameraControlFlags.Manual); // Thread.Sleep(500); // ContinuePresetLightParam(WebCam, vidCapDevice, vidPlayer); // } // WebCam.GetProperties(CameraControlProperty.Exposure, out val, out flags); //} //public void PresetLightParammanual(WebCamera WebCam, CameraValue cameraValue, int explosionRange) //{ // ColorDataGraber colorDataGraber = new ColorDataGraber(WebCam); // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Brightness, cameraValue.Brightness, VideoProcAmpFlags.Manual); // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Contrast, cameraValue.Contrast, VideoProcAmpFlags.Manual); // //WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Hue, cameraValue.Hue, VideoProcAmpFlags.Manual); // //WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Saturation, cameraValue.Saturation, VideoProcAmpFlags.Manual); // //WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.WhiteBalance, cameraValue.WhiteBalance, VideoProcAmpFlags.Manual); // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Sharpness, cameraValue.Sharpness, VideoProcAmpFlags.Manual); // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Gain, cameraValue.Gain, VideoProcAmpFlags.Manual); // if (explosionRange != 10) // { // WebCam.SetProperties(CameraControlProperty.Exposure, explosionRange, CameraControlFlags.Manual); // } // Thread.Sleep(1000); // colorDataGraber.UpdateRoiPos(true); // colorDataGraber.GrabSignal(10); // logger.LogCritical($"11111111亮度:{cameraValue.Brightness} 对比:{cameraValue.Contrast} 锐度:{cameraValue.Sharpness} 增益:{cameraValue.Gain} 曝光:{explosionRange}"); //} //public void ContinuePresetLightParam(WebCamera WebCam, VideoCaptureDevice vidCapDevice, VideoSourcePlayer vidPlayer) //{ // ColorDataGraber colorDataGraber = new ColorDataGraber(WebCam); // WebCam.GetVideoProcAmpPropertiesRange(VideoProcAmpProperty.Brightness, out var minb, out var maxb, out var sizeb, out var valueb, out var flagb); // Thread.Sleep(1000); // // 读取信号值 // var cdp = colorDataGraber.GrabSignal(500); // VideoProcAmpFlags flags = VideoProcAmpFlags.Manual; // WebCam.GetVideoProcAmpProperties(VideoProcAmpProperty.Brightness, out int val, out flags); // int maxcount = 15; // while (maxcount > 0) // { // maxcount--; // if (cdp.GetBSV() < 120) // { // if (val < minb) break; // val = val + 2; // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Brightness, val, VideoProcAmpFlags.Manual); // Thread.Sleep(500); // colorDataGraber.UpdateRoiPos(false); // } // else if (cdp.GetBSV() > 130) // { // if (val > maxb) break; // val = val - 2; // WebCam.SetVideoProcAmpProperties(VideoProcAmpProperty.Brightness, val, VideoProcAmpFlags.Manual); // Thread.Sleep(500); // colorDataGraber.UpdateRoiPos(false); // } // else // { // break; // } // cdp = colorDataGraber.GrabSignal(500); // } // WebCam.GetVideoProcAmpProperties(AForge.Video.DirectShow.VideoProcAmpProperty.Brightness, out val, out flagb); //} } }