■75303 / inTopicNo.2) |
Re[1]: VB DirectShowでカメラのフォーカスを制御したい |
□投稿者/ かずっぴ (1回)-(2015/03/12(Thu) 12:06:07)
|
どうもこんにちわ 僕もまったく同じことをずっと悩んでいまして、、、 ただ、VBではなくVC++なのですが 情報少なくて困りますよねw
それで、トラックバーとかはさておき一応C++ではありますが、 IAMCameraControl インターフェイス というのを使えばプログラム内で制御できるようです。
具体的には
まず IAMCameraControl *pCameraControl;で宣言して ↓にIAMCameraControlの説明が書かれています。 制御するわけなのでsetメソッドを使うことになります。 https://msdn.microsoft.com/ja-jp/library/cc354790.aspx
IUnknown インターフェイスのQueryInterfaceをつかって pDeviceFilter->QueryInterface(IID_IAMCameraControl, (void **)&pCameraControl); というようにメソッドを継承しまして (pDeviceFilterというのはIBaseFilter pDeviceFilterというように元々宣言していたものです) ↓該当ページです。ここのQueryInterfaceを使ってます。 https://msdn.microsoft.com/ja-jp/library/cc351692.aspx
pCameraControl->Set(CameraControl_Exposure,-11, CameraControl_Flags_Manual); というようにしてやれば制御ができました。 この一文ではカメラの露出を制御しています。
この文の最初の引数は https://msdn.microsoft.com/ja-jp/library/cc352340.aspx に書いてあるとおり、変更すればどの項目を変更するか選べます。
二番目の引数は変更する項目の新しい値を入力します。 カメラのメーカーなどによって異なるそうです
三番目の引数はカメラのモード変更です CameraControl_Flags_Manualなら手動モード CameraControl_Flags_Autoならオートモード 今回はプログラム内で手動で変更したいのでCameraControl_Flags_Manualを選んでます。 一応該当ページはここです https://msdn.microsoft.com/ja-jp/library/cc352339.aspx
なんか説明へたくそですけど・・・ なにか役に立てればうれしいです;
■No75239 (ひよこ さん) に返信 > 2015/03/08(Sun) 16:03:46 編集(投稿者) > > DirectShowでUSBカメラで写真を撮るプログラムを作って思っています > > 開発環境:Windows 7(x86) > 使用言語:Visual studio 2013 VB > > > > 画面表示や画像サイズ設定はできるようになったのですが、フォーカスや明るさなどを設定する方法がわからず丸一日手も足も出ませんでした > やりたいことですが、オートフォーカスをオフにしてトラックバーでフォーカスを設定する機能を実装したいと思っています > (現在はほかソフトで都度、事前設定しています) > > 詳細設定をする方法を教えていただけませんか > よろしくお願いします
|
|