Try   HackMD

Python Opencv Camera error 無法開啟鏡頭問題 for Mac

報錯訊息如下:

canot open video camrea error

WARNING: AVCaptureDeviceTypeExternal is deprecated for Continuity Cameras. Please use AVCaptureDeviceTypeContinuityCamera and add NSCameraUseContinuityCameraDeviceType to your Info.plist.

Github 上也有人提出:

https://github.com/opencv/opencv-python/issues/916

有人提出解決方式:

VideoCapture(0) 改成 1

但顯然還是沒有解決我的問題

我的解決方式:

我的解決方式:

使用了 ffmpeg 來檢查系統攝影機的索引號碼,具體步驟如下:

  1. 在終端執行以下命令以查看系統攝影機的索引:
    ​​​ffmpeg -f avfoundation -list_devices true -i ""
    
2024-09-09 14:44:40.417 ffmpeg[13130:3299056] WARNING: Add NSCameraUseContinuityCameraDeviceType to your Info.plist to use AVCaptureDeviceTypeContinuityCamera.
2024-09-09 14:44:40.685 ffmpeg[13130:3299056] WARNING: AVCaptureDeviceTypeExternal is deprecated for Continuity Cameras. Please use AVCaptureDeviceTypeContinuityCamera and add NSCameraUseContinuityCameraDeviceType to your Info.plist.
[AVFoundation indev @ 0x13f72b960] AVFoundation video devices:
[AVFoundation indev @ 0x13f72b960] [0] FaceTime HD相機
[AVFoundation indev @ 0x13f72b960] [1] OBS Virtual Camera
[AVFoundation indev @ 0x13f72b960] [2] ssss相機
[AVFoundation indev @ 0x13f72b960] [3] ssss桌上視角相機
[AVFoundation indev @ 0x13f72b960] [4] Capture screen 0
[AVFoundation indev @ 0x13f72b960] AVFoundation audio devices:
[AVFoundation indev @ 0x13f72b960] [0] ssss麥克風
[AVFoundation indev @ 0x13f72b960] [1] MacBook Air的麥克風
[AVFoundation indev @ 0x13f72b960] [2] VB-Cable
[AVFoundation indev @ 0x13f72b960] [3] BlackHole 64ch
[in#0 @ 0x13f72aca0] Error opening input: Input/output error
Error opening input file .

  1. 獲取正確的攝影機索引號碼後,將 cv2.VideoCapture() 中的參數修改為正確的數字。在我的情況下,攝影機索引號是 2,因此我修改為:
    ​​​cv2.VideoCapture(2)
    

https://github.com/opencv/opencv-python/issues/916#issuecomment-2330867948

參考來源:

FFmpeg学习笔记一:Mac下查看设备及采集
https://blog.csdn.net/xjhmax/article/details/129181828

其他人提供的方式:

用 terminal 打開,IDE 問題
阿菊的OpenCv2——Mac上调用摄像头设备读取视频帧并用imshow()显示
https://blog.csdn.net/fuhao7i/article/details/110877317