无法通过OpenCV Python打开Mac摄像头

7
我刚接触opencv并尝试通过OpenCV Python访问Macbook内置摄像头,但出现错误。
import cv2

frameWidth = 640
frameHeight = 480
cap = cv2.VideoCapture(0)
cap.set(3, frameWidth)
cap.set(4, frameHeight)
cap.set(10,150)

while True:
   success, img = cap.read()
   cv2.imshow("Result", img)
   if cv2.waitKey(1) & 0xFF == ord('q'):
       break


Traceback (most recent call last):
  File "/Users/hasanaktas/PycharmProjects/OpencvPython/project3.py", line 12, in <module>
    cv2.imshow("Result", img)
cv2.error: OpenCV(4.2.0) /Users/travis/build/skvark/opencv-python/opencv/modules/highgui/src/window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'

已经尝试将VideoCapture(0)更改为VideoCapture(1)并添加以下代码,但仍然没有帮助。 顺便说一下,我正在使用PyCharm。

cap.release()
cv2.destroyAllWindows()

1
cap.set(10,150)是什么意思?尽量避免使用像这样的丑陋常量,而是使用为您定义的参数名称。 - Mark Setchell
1
你是如何调用它的?我在工作中被告知,苹果最近阻止任何未经“苹果开发者”签名的东西访问任何外围设备。这给我们带来了问题,因为它不允许Audacity访问麦克风。我们不得不在其周围构建一个shell脚本包装器。Bash已被签名,因此允许调用audacity的bash脚本访问麦克风。 - Alan Hoover
我不建议在苹果设备上使用opencv视频流功能,因为我从未成功过。相反,建议考虑从AVCaptureSession进行流式传输,并将单个帧发送到您的函数中。毕竟,视频只是一系列单独的图像。尝试使用UIImageToMat函数(您可能需要使用c ++库)。 - johncederholm
4个回答

8

我在我的Mac电脑上也遇到了同样的问题。我只是更换了

cv2.VideoCapture(0)

使用

cv2.VideoCapture(1)
< p >运行得非常好。

7

我有两个建议想要提出。

#1: 允许您的终端或PyCharm访问摄像头。


  • 前往 系统偏好设置->安全性与隐私->摄像头 并将 PyCharm 添加到列表中。

    • enter image description here

#2: 使用 while cap.isOpened() 而不是 while True,这样您就可以知道 PyCharm终端 可以访问您的相机。

  • import cv2
    
    frameWidth = 640
    frameHeight = 480
    cap = cv2.VideoCapture(0)
    cap.set(3, frameWidth)
    cap.set(4, frameHeight)
    cap.set(10,150)
    
    while cap.isOpened():
        success, img = cap.read()
        if success:
            cv2.imshow("Result", img)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
    

1
如果不在列表中怎么办? - MikeSchem

0

我曾经遇到同样的问题,但是没有找到任何解决方案。通过试错,我发现我的OpenCV版本已经损坏了。因此,我将其删除并安装了一个新的版本。你可以使用以下两种方法之一: 1. 终端 运行brew uninstall opencv3来卸载opencv, 然后使用sudo apt-get install libopencv-dev python-opencv命令进行安装。

2. Anaconda 实际上,我用这种方法解决了自己的问题。

  1. 打开Anaconda
  2. 进入环境部分,选择您的环境如下: enter image description here 然后点击已安装并搜索opencventer image description here 选择opencv包并卸载它。然后尝试通过选择未安装并搜索opencv来重新安装opencv。请注意安装正确的版本。 enter image description here

-2
尝试增加帧宽度/高度,例如使用:
frameWidth = 1048 frameHeight = 1028

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接