gpt4 book ai didi

c++ - 如何在 OSX 上使用 C++ 更改罗技 c920 网络摄像头设置?

转载 作者:太空狗 更新时间:2023-10-29 23:05:20 25 4
gpt4 key购买 nike

我正在尝试使用 OpenFrameworks(一种 C++ 框架)控制网络摄像头的自动对焦/自动白平衡设置,但没有成功。

框架提供了QTKit视频抓取器,但我无法使用设置。调用时有一个 videoSettings() 函数,我收到一条警告,指出该项目必须使用 10.6 sdk 进行编译,并且在使用 10.7+ 编译应用程序时不受支持

我在 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 框架中的 dylibs 也可用于 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

我试过将框架拖到第 3 方框架文件夹中,并在 Xcode 中将路径添加到 header 搜索路径和库搜索路径,但没有成功。

我试过使用 ofQuickTimeGrabber 但出现解析错误:

Unknown type name 'ofQuickTimeGrabber'

尝试后ofxUVC它使用了 ofxQTKitGrabber 但再次遇到错误:

Field type 'ofxQTKitVideoGrabber' is an abstract class

理想情况下,我想控制 c920 网络摄像头的分辨率(16:9 格式看起来有点变形/缩放)和自动对焦。我在 osx 10.9 上的设置可能吗?如果是,怎么办?

最佳答案

如果您从 Apple 开发者网站 (https://developer.apple.com/downloads/) 下载旧版本的 XCode(最后一个版本 3 或 4,具体取决于您是想要 10.6 还是 10.7 SDK),它将包含 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 并在build设置中选择 10.6 或 10.7 SDK。请记住为您的项目和 openFrameworksLib 项目更改 SDK。

此外,为确保正确的宽高比,请确保您使用特定尺寸初始化相机(例如 grabber.initGrabber(1280, 720);,如果您尝试从相机获得 16:9 的宽高比。默认情况下,您不能保证获得相机的“最佳”原始分辨率。

出于文档目的,以下是当前需要对 Logitech c920 摄像头进行 xUVC 控制的步骤:

  1. 将 ofxUVC 和 ofxYAML 添加到 openframeworks addons 文件夹
  2. 在 UVCCameraControl.h 中将 UVC_PROCESSING_UNIT 设置为 3 ( #define UVC_PROCESSING_UNIT_ID 0x03 )
  3. 在 UVCCameraControl.m 的 setData 中和 getData修改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 列出的 id和 cameraToUse yaml 文件顶部的设置为 6(c920 的基于 yaml 0 的索引)。

这已在 osx 10.7、10.8 和 10.9 上成功测试

关于c++ - 如何在 OSX 上使用 C++ 更改罗技 c920 网络摄像头设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19999433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com