C++ Opencv&;OSX:USB摄像头访问

C++ Opencv&;OSX:USB摄像头访问,c++,opencv3.0,macos-sierra,C++,Opencv3.0,Macos Sierra,我检查了所有相关问题,答案都过时(API)或不相关/没有真实答案 Opencv 3.0版(通过自制) OS:OSX塞拉 Opencv运行平稳,除了VideoCapture::VideoCapture(int设备) 无论我尝试的参数是什么,视频捕获总是使用iSight摄像头 我错过什么了吗 *注意:我不是一个开发人员,只是想作为OSX用户和Opencv用户享受乐趣*,OSX和Opencv的问题不仅仅是重复 (我不是跟踪你,而是跟踪你的进展) 您的问题有一个技巧/解决方案 您只需禁用并重新启用iSi

我检查了所有相关问题,答案都过时(API)或不相关/没有真实答案

Opencv 3.0版(通过自制)

OS:OSX塞拉

Opencv运行平稳,除了VideoCapture::VideoCapture(int设备)

无论我尝试的参数是什么,视频捕获总是使用iSight摄像头

我错过什么了吗


*注意:我不是一个开发人员,只是想作为OSX用户和Opencv用户享受乐趣*

,OSX和Opencv的问题不仅仅是重复

(我不是跟踪你,而是跟踪你的进展)

您的问题有一个技巧/解决方案

您只需禁用并重新启用iSight摄像头,就可以在以后访问所需的摄像头

步骤0:

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

步骤1:

取消SIP的激活,如果你不确定自己在做什么,但没有其他选择,那么这是你永远不应该做的事情。 重新启动mac,在启动过程中按command+R。 加载UI后,进入顶部栏,选择utilty->terminal并键入:

csrutil disable; reboot
csrutil enable;
这将使您的SIP降低,并将mac重新启动到“正常”模式

步骤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
步骤3:(可选) 在opencv中进行测试时,您应该会在尝试时出错 cv::视频捕获上限(0); 错误是一个文本块,告诉您没有摄像头/驱动器,这是正常的

步骤4: 重新启动

步骤5:

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
步骤6:

在opencv中重新测试;拔下usb摄像头,然后尝试: cv::视频捕获帽(1); 错误输出应该告诉您cv::VideoCapture中的范围是0-0,而不是xcode默认告诉您的0-1

祝贺您现在可以在Xcode和Sierra上访问opencv中的USB/网络摄像头

步骤7:(可选,但强烈建议)

重新激活您的SIP(如果您不确定您在终端中正在做什么/请在mac上下载执行它)。 重新启动mac press command+R,在UI出现后,选择实用工具->终端并键入:

csrutil disable; reboot
csrutil enable;
然后为你的mac电脑创建一个新的重启点(“OSX Serra-date-Opencv access网络摄像头”或任何有明确名称的东西)

然后在终端类型中:

reboot
第八步:享受


一旦您运行了opencv安装程序,并且如果您不使用Objective-C/iDevice编程,您应该避免再更新Xcode,因为它会很难破坏opencv安装。我想您指的是SIP(“系统完整性保护”),而不是ISP。事实上,我们会修复它。在第二次opencv测试中又出现了一个输入错误!但它为什么要修复“bug”?。。。。如果你一直回答我的问题,你可以随时跟踪我,这对我来说很好。这与OSX在opencv安装后默认不刷新驱动程序以及其他我早已放弃的原因有关。我总是使用此修复或足够接近的解决方案来修复新Mac上的此问题。请不要忘记在之后重新启用SIP。@Ebya。嗨,在Mac Sierra中使用opencv的usb网络摄像头还有其他方法吗?如果我们再次编译OpenCV,这是一个解决方案还是以上答案?答案是我们必须遵循的唯一方法吗?