3

OpenFrameworks (c++ フレームワーク) を使用して Web カメラのオート フォーカス/オート ホワイト バランス設定を制御しようとしていますが、運がありません。

フレームワークは QTKit ビデオ グラバーを提供しますが、設定を使用できません。プロジェクトを 10.6 SDK でコンパイルする必要があり、アプリが 10.7+ でコンパイルされている場合はサポートされないという警告が表示されることを呼び出すと、videoSettings() 関数があります。

OSX 10.9 で openFrameworks 0.8.0 を使用していますが、10.6 SDK をダウンロードする簡単な方法が見つかりませんでした (直接ダウンロードはありません (古いバージョンの xcode と SDK ダウンロード オプション)。Xcode 4.1 をダウンロードしましたが、 osx 10.9 のため、インストールできません)。

GStreamer グラバーも設定しようとしましたが、リンク エラーが発生します。

Undefined symbols for architecture i386:
  "ofGstVideoGrabber::ofGstVideoGrabber()", referenced from:
      testApp::setup() in testApp.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

ただし、GStreamer フレームワークの dylib は i386 でも使用できると思いました。

file /Library/Frameworks/GStreamer.framework/Headers /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstbase-1.0.0.dylib 
/Library/Frameworks/GStreamer.framework/Headers:                                 directory
/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstbase-1.0.0.dylib: Mach-O universal binary with 2 architectures
/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstbase-1.0.0.dylib (for architecture x86_64):  Mach-O 64-bit dynamically linked shared library x86_64
/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstbase-1.0.0.dylib (for architecture i386):    Mach-O dynamically linked shared library i386

フレームワークをサードパーティのフレームワークフォルダーにドラッグして、パスを Xcode のヘッダー検索パスとライブラリ検索パスに追加しようとしましたが、うまくいきませんでした。

ofQuickTimeGrabber を使用してみましたが、解析エラーが発生しました:

Unknown type name 'ofQuickTimeGrabber'

ofxQTKitGrabberを使用する ofxUVC を試した後、再びエラーが発生しました。

Field type 'ofxQTKitVideoGrabber' is an abstract class

理想的には、c920 ウェブカメラの解像度 (16:9 形式は少し変形/スケーリングされているように見えます) とオートフォーカスを制御したいと考えています。osx 10.9 でのセットアップでそれは可能ですか? もしそうなら、どのように?

4

1 に答える 1

1

Apple 開発者サイト ( https://developer.apple.com/downloads/ )から古いバージョンの XCode (10.6 または 10.7 SDK が必要かどうかに応じて、3 または 4 の最終バージョン) をダウンロードすると、 10.6 および/または 10.7 SDK (パッケージ内)。

完全なパッケージをインストールせずに SDK を抽出できます (10.9 では許可されません)。これを行うにはいくつかの方法がありますが、私が見つけた最も簡単な方法は、Pacifist http://www.charlessoft.com/を使用することです。

次に、これらの両方の SDK を /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs フォルダーの XCode 5 SDKs フォルダーに配置し、XCode 5 で使用します。

次に、XCode を再起動し、ビルド設定で 10.6 または 10.7 SDK を選択します。プロジェクトと openFrameworksLib プロジェクトの両方の SDK を忘れずに変更してください。

また、正しい縦横比を確保するために、カメラを特定のサイズで初期化していることを確認してください (たとえばgrabber.initGrabber(1280, 720);、カメラから 16:9 の縦横比を取得しようとしている場合など)。デフォルトでは、カメラの「最適な」取得が保証されているわけではありません。ネイティブ解像度。

ドキュメントの目的で、Logitech c920 カメラの xUVC コントロールを取得するために現在必要な手順は次のとおりです。

  1. ofxUVC と ofxYAML を openframeworks アドオン フォルダーに追加します。
  2. UVCCameraControl.h で UVC_PROCESSING_UNIT を 3 に設定します ( #define UVC_PROCESSING_UNIT_ID 0x03)
  3. UVCCameraControl.m のsetDatagetDataで、wIndex を変更して、unitIDの代わりにセレクターを使用します ( controlRequest.wValue = (selector << 8) | interfaceNum;)
  4. .yaml ファイルのカメラ定義を更新する

ロジクール c920 の定義:

- name: Logitech Camera
  vendorId : 0x046d
  productId: 0x82d
  interfaceNum: 0x03
  # 1280x720 (this is 1/2 res)
  width: 1280
  height: 720

この場合、Logitech Camera は ofQTKitVideoGrabber によってリストされた IDcameraToUseであり、yaml ファイルの上部にある は 6 (c920 の yaml 0 ベースのインデックス) に設定されていることに注意してください。

これは、osx 10.7、10.8、および 10.9 で正常にテストされました。

于 2013-11-16T16:42:58.247 に答える