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 装完双系统以后怎么备份windows?