【亲测已解决】macOS Catalina上PyCharam调用摄像头权限问题

最近在用OpenCV做人脸识别的项目,PyCharam调用电脑自带相机,怎么都成功不了,后来查了一下,是macOS Catalina变态的权限问题。

测试代码:

import cv2

cap = cv2.VideoCapture(0)
while(1):
    # get a frame
    ret, frame = cap.read()
    # show a frame
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

报错:

Process finished with exit code 134 (interrupted by signal 6: SIGABRT)

查了好久博客,看到有网友通过终端指令来实现摄像头权限,但是还是想直接给PyCharam摄像头访问权限,终于找到彻底解决问题的办法。就是用Xcode新建一个PyCharam项目,在info.plist里,新增摄像头权限。

1)打开Xcode,新建项目,选择macOS,App。
【亲测已解决】macOS Catalina上PyCharam调用摄像头权限问题_第1张图片

2)完善项目信息:
Product Name: pycharm
Organization Identifier: com.jetbrains
Bundle identifier: com.jetbrains.pycharm
Language: Swift
User Interface: Storyboard
【亲测已解决】macOS Catalina上PyCharam调用摄像头权限问题_第2张图片

3)打开Info.plist文件 ,添加Privacy - Camera Usage Description,属性为:Give me my camera access!
【亲测已解决】macOS Catalina上PyCharam调用摄像头权限问题_第3张图片

4)打开AppDelegate.swift文件,导入库新增:

import AVKit

applicationDidFinishLaunching() 函数中,添加代码:

AVCaptureDevice.requestAccess(for: .video) { _ in }

如图所示:
【亲测已解决】macOS Catalina上PyCharam调用摄像头权限问题_第4张图片
然后运行项目,可以看到久违的权限提示:
【亲测已解决】macOS Catalina上PyCharam调用摄像头权限问题_第5张图片
确认后,系统偏好设置中,安全于隐私->摄像头,也可以看到PyCharam的摄像头权限开关了!
【亲测已解决】macOS Catalina上PyCharam调用摄像头权限问题_第6张图片

退出Xcode,重新打开PyCharam,允许代码,就可以看到摄像头已经开启了。

/* 注:若提示报错:

Python openCV qt.qpa.plugin: could not find the qt platform plugin "cocoa" in "" 

在终端,python环境中安装:

pip install opencv-python-headless

再重新允许,就可以正常运行了!

以上就是macOS Catalina上一劳永逸的让PyCharam获取摄像头权限的方法!

你可能感兴趣的:(OpenCV)