Opencv & OSX: USB 摄像头访问

Opencv & OSX: USB camera acess

我检查了所有相关问题,答案都是过时的(C API)或不是relevant/without真正的答案。

Opencv 3.0 版(通过自制软件)。

OS: OSX 塞拉

Opencv 运行 流畅,除了 VideoCapture::VideoCapture(int device).

无论我尝试什么参数,Videocapture 总是使用 iSight 摄像头。

我是不是漏掉了什么?

*注意:我不是开发人员,只是想找点乐子 *

作为 OSX 用户和 Opencv 用户,OSX 和 opencv 的问题经常发生。

(我不是在跟踪你,而是在关注你的进展)。

您的问题有一个 trick/fix。

您只需禁用并重新启用 iSight 摄像头,之后就可以访问您想要的任何摄像头。

第 0 步:

为您的 OSX 安装创建一个备份(您应该始终有一个)

第 1 步:

停用 SIP,如果您不确定自己在做什么但别无选择,则绝对不要这样做。 重新启动您的 mac,在启动过程中按 command+R。 UI 加载后,进入顶部栏并选择 utilty->terminal 并键入:

csrutil disable; reboot

这将禁用您的 SIP 并重新启动您的 mac 进入 "normal" 模式。

第 2 步:

sudo chmod a-r /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC
sudo chmod a-r /System/Library/PrivateFrameworks/CoreMediaIOServicesPrivate.framework/Versions/A/Resources/AVC.plugin/Contents/MacOS/AVC
sudo chmod a-r /System/Library/QuickTime/QuickTimeUSBVDCDigitizer.component/Contents/MacOS/QuickTimeUSBVDCDigitizer
sudo chmod a-r /Library/CoreMediaIO/Plug-Ins/DAL/AppleCamera.plugin/Contents/MacOS/AppleCamera
sudo chmod a-r /Library/CoreMediaIO/Plug-Ins/FCP-DAL/AppleCamera.plugin/Contents/MacOS/AppleCamera

第三步:(可选) 在opencv中测试,尝试时应该会出错 cv::VideoCapture上限(0); 错误是一段文本,告诉您没有 camera/drivers,这是正常的。

第四步: 重启

第五步:

sudo chmod a+r /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC
sudo chmod a+r /System/Library/PrivateFrameworks/CoreMediaIOServicesPrivate.framework/Versions/A/Resources/AVC.plugin/Contents/MacOS/AVC
sudo chmod a+r /System/Library/QuickTime/QuickTimeUSBVDCDigitizer.component/Contents/MacOS/QuickTimeUSBVDCDigitizer
sudo chmod a+r /Library/CoreMediaIO/Plug-Ins/DAL/AppleCamera.plugin/Contents/MacOS/AppleCamera
sudo chmod a+r /Library/CoreMediaIO/Plug-Ins/FCP-DAL/AppleCamera.plugin/Contents/MacOS/AppleCamera

第六步:

在opencv中重新测试;拔下你的 USB 摄像头试试: cv::VideoCapture上限(1); 错误输出应该告诉您 cv::VideoCapture 中的范围是 0-0,而不是 xcode 默认告诉您的 0-1。

恭喜,您现在可以在 Xcode 和 Sierra 上的 opencv 中访问 USB/webcam。

第 7 步:(可选但强烈推荐)

重新激活您的 SIP(​​如果您不确定 mac terminal/download 中的操作 ,请执行此操作). 重新启动您的 mac 按 command+R,一旦 UI 出现在这里,选择 Utility->Terminal 并输入:

csrutil enable;

然后为您的 mac("OSX Serra - date - Opencv access Webcam" 或任何具有显式名称的名称)创建一个新的恢复点。

然后在终端输入:

reboot

第八步:享受。

一旦你有一个 opencv 设置 运行 并且如果你不使用 Objective-C/iDevice 编程你应该避免更新 Xcode 它往往会破坏opencv 安装相当困难