2012-02-15 163 views
7

我有一個項目,我需要使用USB攝像頭處理非常近距離(低於5毫米)的圖像。由於可用空間很短,我無法使用輔助鏡頭。使用AForge訪問USB攝像頭控件

我知道我可以在位圖級別進行一些後期處理,但是我想獲得相機級別的自動對焦或白平衡等屬性。

我正在用C#開發AForge進行圖像採集和後期處理,但我似乎無法找到在圖像採集發生之前控制相機的方法。

你能幫我嗎?

回答

7

經過一些更徹底的研究後,我發現了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

控制這些項目,而不形式
+0

@Darshana你做的編輯太小了。這不應該被批准,所以我把它回滾了。請在編輯中加入更多努力。 [閱讀此](http://stackoverflow.com/help/editing)如果你不確定如何正確編輯帖子。 – Gray 2013-11-14 13:34:23

6

您可以訪問相機直接設置,而無需調用該方法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); 
1

要訪問其他攝像頭屬性像亮度,對比見 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); 
+1

謝謝你的回覆。您已將有價值的信息添加到我的最初想法中:可以使用IAMVideoProcAmp設置這些信息。距離我的第一篇文章還有幾年,但這些信息可能仍然與某些用戶有關。 – Shadlan 2014-10-06 16:13:33