OpenCV Python 脚本 Mac "aborts"

OpenCV Python Scripts Mac "aborts"

所以我只是想 运行 基本的 OpenCV 程序

    import numpy as np
    import cv2

    cap = cv2.VideoCapture(0)

    while(True):
        # Capture frame-by-frame
        ret, frame = cap.read()

        # Our operations on the frame come here
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)

        # Display the resulting frame
        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    # When everything done, release the capture
    cap.release()
    cv2.destroyAllWindows()

但出于某种原因,当我尝试 运行 它(使用 python 2 或 3)时,我得到了这个奇怪的中止语句

    [1]    74309 abort      python3 index.py

(我猜 5 位数字是 PID)但是,如果我在 VideoCapture 函数中传入一个已经存在的视频的路径,它确实有效。我是所有这一切的初学者,所以我不太确定问题出在哪里

谢谢:)

我找到了解决办法! 我尝试 运行 使用 mac 附带的默认终端的脚本并且它有效:)所以我使用的第三方终端 (iTerm) 似乎有一些奇怪的问题

您必须授权 iTerm 访问相机(在系统偏好设置中)。默认情况下,Terminal 和 iTerm 都没有这个权限。 macOS Mojave 只要求允许 iTerm,您的 Python 程序运行良好! 这不是 iTerm 的问题,或者 的问题。

我在 VSCode 运行ning OpenCV 遇到了同样的问题。结果确实是访问新macOS上的摄像头的权限错误。我无法 VSCode 请求权限(或通过系统偏好设置手动添加)。

我的解决方案是 运行 VSCode 作为 root 使用

sudo /Applications/Visual Studio Code.app/Contents/MacOS/Electron

这不是最干净的解决方案,但对我有用。

在VSCode、

1.type cmd+shift+p 
2.type "shell command: Install code in PATH"
3. Close vscode
4. Use "sudo code" to open vscode 
5. It will give warning not to run as a root user
6. Ignore the warning and run the file , you will not get the "Abort trap: 6" error anymore.