You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac Monterey系统下OpenCV C++ VideoCapture调用摄像头失败求助

M1 MacBook Pro(Monterey)下OpenCV C++调用内置摄像头失败的解决方法

问题场景

设备:2021款M1 MacBook Pro,系统macOS Monterey
环境:Visual Studio Code + OpenCV C++
操作:尝试通过VideoCapture类调用内置摄像头,已在系统偏好设置中给终端、iTerm赋予摄像头权限,但运行代码后仍报错。

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

void camera_in()
{
    VideoCapture cap;
    cap.open(2, CAP_AVFOUNDATION);

    if (!cap.isOpened())
    {
        cerr << "Camera open failed!" << endl;
        return;
    }

    cout << "Frame width: " << cvRound(cap.get(CAP_PROP_FRAME_WIDTH)) << endl;
    cout << "Frame height: " << cvRound(cap.get(CAP_PROP_FRAME_HEIGHT)) << endl;

    Mat frame, inversed;
    while (true)
    {
        cap >> frame;
        if (frame.empty())
            break;
        
        inversed = ~frame;

        imshow("frame", frame);
        imshow("inversed", inversed);
        
        if (waitKey(10) == 27)
            break;
    }
    destroyAllWindows();
}

int main()
{
    camera_in();
}

报错信息

2022-08-05 18:15:01.284398+0900 video[7664:45504] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x10b54c320> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2022-08-05 18:15:01.291647+0900 video[7664:45504]  HALC_ProxyObjectMap::_CopyObjectByObjectID: failed to create the local object
2022-08-05 18:15:01.291664+0900 video[7664:45504]  HALC_ShellDevice::RebuildControlList: couldn't find the control object
2022-08-05 18:15:01.316885+0900 video[7664:45504] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x10c50bb40> 30010C1C-93BF-11D8-8B5B-000A95AF9C6A

解决步骤

  • 修正摄像头索引:M1 Mac内置摄像头在AVFOUNDATION框架下的索引通常为0或1,将代码中的2改为0尝试:

    cap.open(0, CAP_AVFOUNDATION);
    

    若0无效,再试索引1。

  • 检查OpenCV架构兼容性:确保安装的是适配M1的arm64版本OpenCV,通过brew安装时直接使用原生arm64终端(非Rosetta模式)执行:

    brew install opencv
    
  • 给VS Code添加摄像头权限:若在VS Code内置终端运行程序,需在「系统偏好设置→安全性与隐私→隐私→摄像头」中勾选「Visual Studio Code」。

  • 重置摄像头权限缓存:执行以下命令重置系统摄像头权限,之后重新打开终端/VS Code并重新授权:

    tccutil reset Camera
    
  • 排查硬件问题:先用系统自带的Photo Booth确认摄像头能正常工作,排除硬件故障。

内容的提问来源于stack exchange,提问作者Joon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:45:25