OpenCV 不会从 MacBook Pro iSight 中捕获

Posted

技术标签:

【中文标题】OpenCV 不会从 MacBook Pro iSight 中捕获【英文标题】:OpenCV wont' capture from MacBook Pro iSight 【发布时间】:2013-10-04 06:20:49 【问题描述】:

几天以来,我再也无法从 opencv 应用程序中打开 iSight 摄像头了。 cap = cv2.VideoCapture(0) 返回,cap.isOpened() 返回 true。但是,cap.grab() 只返回 false。有什么想法吗?

示例代码:

import cv2

cv2.namedWindow("preview")
vc = cv2.VideoCapture(0)
rval = True

while rval:
    rval, frame = vc.read()
    cv2.imshow("preview", frame)

    key = cv2.waitKey(20)
    if key == 27: # exit on ESC
        break
Mac OS 10.8.5 Python 2.7.5(但也不能在 C++ 应用程序中运行) OpenCV 2.4.6.1

【问题讨论】:

你发现了吗?我在这里再次问:***.com/questions/19187076/… 【参考方案1】:

这就是我让相机为您的代码工作的方式(在 OSX 10.6 上):

import cv2

cv2.namedWindow("preview")
vc = cv2.VideoCapture(0)

rval, frame = vc.read()

while True:

  if frame is not None:   
     cv2.imshow("preview", frame)
  rval, frame = vc.read()

  if cv2.waitKey(1) & 0xFF == ord('q'):
     break

【讨论】:

谢谢。完全重新安装后似乎再次工作。此外,设置输入通道可能需要更长的时间。一个框架实际上只在第二次或第三次调用 read() 时出现。之前没有这个问题 你是如何在 mac 上安装 OpenCV 的?【参考方案2】:

我在抓取图像后出现了分割错误。原来我在cap.release()之前使用了cv2.destroyAllWindows()。下面我展示了工作代码。

cap = cv2.VideoCapture(0)

while(True):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

#do some ops

cap.release()
cv2.imshow("output", output)
cv2.waitKey(0)
cv2.destroyAllWindows()

此代码适用于 El Captain。

【讨论】:

请编辑您的答案以解释您的代码的作用以及它如何回答问题? @alex-attinger 在抓取图像时遇到问题。我展示了我的代码,它可以抓取一张图片并在 macOS 上运行。 我知道您的代码可能会解决问题,但是如果您解释原始代码的问题以及您的代码如何实际解决问题,它会更加有用。特别是考虑到这个问题是从 2013 年开始的

以上是关于OpenCV 不会从 MacBook Pro iSight 中捕获的主要内容,如果未能解决你的问题,请参考以下文章

从 Macbook pro 上的 IplImage* 转换后,我的 QPixmap 分为 3 个部分

macbook pro 合盖待机后,翻开屏幕亮的特别慢

macbook pro升级固态后对电池续航有影响吗?

macbook pro 装完双系统以后怎么备份windows?

求救,有谁有MacBook Pro 11.1Windows下的bootcamp

MacBook pro2017款13.3寸开机后有砰砰的声音