12

ウェブカメラを使用してコンピュータービジョンを実行しようとしています(モデルはHercules Dualpixです)。使用するのに理想的なカメラではないことは知っていますが、ここでは選択の余地がありません。

問題は、オートフォーカスによってカメラのキャリブレーションが困難/不可能になることです。オートフォーカス機能を無効にする方法は誰でも知っています。または、誰かがそれに対処し、オートフォーカスでカメラを調整するアイデアを持っている場合。

4

3 に答える 3

11

HerculesカメラはUVCに準拠しているため、DirectShowインターフェイスIAMCameraControlで動作するはずです。フォーカスを特定の値に設定し、フラグを使用して、フォーカスを自動化しないように設定できます。IAMCameraControl::Getすべてのカメラがフォーカスのオフをサポートしているわけではないため、を使用して現在の状態をポーリングできます。

IAMCameraControl *pCameraControl; 
HRESULT hr; 
hr = pFilter->QueryInterface(IID_IAMCameraControl, (void **)&pCameraControl); 
if (hr == S_OK) {
  long defaultFocusValue;
  hr = pCameraControl->GetRange(CameraControl_Focus,
                                NULL, // min
                                NULL, // max
                                NULL, // minstep
                                &defaultFocusValue, // default
                                NULL); // capflags
  hr = pCameraControl->Set(CameraControl_Focus, // property
                           defaultFocusValue, // value
                           CameraControl_Flags_Manual); 
} 

フォーカスには、各カメラによって個別に定義される範囲があるため、必要に応じて、デフォルト値と最小値、最大値を見つけるために、図のようにクエリを実行する必要があります。この例でpFilterは、はDirectShowからの入力フィルターへのポインターです。デバイスを列挙し、必要なデバイスを見つけることで取得できます。

于 2009-11-11T20:56:24.743 に答える
2

uvcdynctrlを使用してみてください 。ここで、-lフラグを使用すると機能が一覧表示され、-sを使用して任意の機能を設定できます http://manpages.ubuntu.com/manpages/natty/man1/uvcdynctrl.1.html

于 2012-03-19T20:12:52.333 に答える
0

OpenCVとPythonの少しの助けを借りて、これを非常に簡単に行うことができます。

cap = cv2.VideoCapture(1) # my webcam cap.set(3, 1280) # set the resolution cap.set(4, 720) cap.set(cv2.CAP_PROP_AUTOFOCUS, 0) # turn the autofocus off

OpenCV 3.1.0-dev、Python 2.7.5、およびLogitech HD ProWebcamC920を使用しています

于 2016-07-14T18:25:21.017 に答える