2012-02-15 417 views
7

私は、USBカメラを使用して非常に近い範囲(5mm未満)で画像を処理する必要があるプロジェクトがあります。使用可能なスペースが非常に短いため、私は補助レンズを使用できません。AForgeでUSBカメラコントロールにアクセス

私はビットマップレベルでいくつかの後処理を行うことができますが、私はカメラレベルでオートフォーカスやホワイトバランスのようなプロパティにアクセスしたいと思います。

私はAForgeで画像取得と後処理のためにC#で開発していますが、画像取得が行われる前にカメラを制御する方法を見つけることができないようです。

私を助けることができますか?

答えて

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 

また、あなたはコールせずに直接メソッドDisplayPropertyPageを(カメラ設定にアクセスすることができますIAMVideoProcAmp

+0

@ダルシャナあなたが作った編集は小さすぎた。それは承認されていないはずなので、私はそれを元に戻しました。あなたの編集にもっと力を入れてください。投稿を適切に編集する方法がわからない場合は、[こちらを読む](http://stackoverflow.com/help/editing)をご覧ください。 – Gray

6

を使用して、フォームずにこれらの項目を制御することが可能と思われる)

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

コントラストを参照してください。

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を使用してこれらを設定することができました。私の最初の投稿から2年が経過していますが、その情報はまだ一部のユーザーに関連するかもしれません。 – Shadlan

関連する問題