我有一个项目,我需要使用USB摄像头处理非常近距离(低于5毫米)的图像。由于可用空间很短,我无法使用辅助镜头。使用AForge访问USB摄像头控件
我知道我可以在位图级别进行一些后期处理,但是我想获得相机级别的自动对焦或白平衡等属性。
我正在用C#开发AForge进行图像采集和后期处理,但我似乎无法找到在图像采集发生之前控制相机的方法。
你能帮我吗?
我有一个项目,我需要使用USB摄像头处理非常近距离(低于5毫米)的图像。由于可用空间很短,我无法使用辅助镜头。使用AForge访问USB摄像头控件
我知道我可以在位图级别进行一些后期处理,但是我想获得相机级别的自动对焦或白平衡等属性。
我正在用C#开发AForge进行图像采集和后期处理,但我似乎无法找到在图像采集发生之前控制相机的方法。
你能帮我吗?
经过一些更彻底的研究后,我发现了answer。
如果其他人正在寻找这个,你可以尝试以下;
VideoCaptureDevice Cam1;
FilterInfoCollection VideoCaptureDevices;
VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
Cam1 = new VideoCaptureDevice(VideoCaptureDevices[0].MonikerString);
Cam1.DisplayPropertyPage(IntPtr.Zero); //This will display a form with camera controls
它似乎也可以通过使用IAMVideoProcAmp
控制这些项目,而不形式您可以访问相机直接设置,而无需调用该方法DisplayPropertyPage()
FilterInfoCollection videoDevices =
new FilterInfoCollection(FilterCategory.VideoInputDevice);
VideoCaptureDevice videoDevice =
new VideoCaptureDevice(videoDevices[camDevice].MonikerString);
videoDevice.SetCameraProperty(
CameraControlProperty.Zoom,
zoomValue,
CameraControlFlags.Manual);
videoDevice.SetCameraProperty(
CameraControlProperty.Focus,
focusValue,
CameraControlFlags.Manual);
videoDevice.SetCameraProperty(
CameraControlProperty.Exposure,
exposureValue,
CameraControlFlags.Manual);
要访问其他摄像头属性像亮度,对比见 IAMVideoProcAmp implementation
videoDevice.SetVideoProperty(
VideoProcAmpProperty.Brightness,
brightnessValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.Contrast,
contrastValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.Saturation,
saturationValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.Sharpness,
sharpnessValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.WhiteBalance,
whiteBalanceValue,
VideoProcAmpFlags.Manual);
videoDevice.SetVideoProperty(
VideoProcAmpProperty.BacklightCompensation,
backlightCompensationValue,
VideoProcAmpFlags.Manual);
谢谢你的回复。您已将有价值的信息添加到我的最初想法中:可以使用IAMVideoProcAmp设置这些信息。距离我的第一篇文章还有几年,但这些信息可能仍然与某些用户有关。 – Shadlan 2014-10-06 16:13:33
@Darshana你做的编辑太小了。这不应该被批准,所以我把它回滚了。请在编辑中加入更多努力。 [阅读此](http://stackoverflow.com/help/editing)如果你不确定如何正确编辑帖子。 – Gray 2013-11-14 13:34:23