【发布时间】:2010-09-05 18:09:15
【问题描述】:
是否可以通过编程方式访问 macbook 上的 iSight 摄像头?我的意思是我希望能够根据命令从 iSight 相机中抓取静止帧,然后对它们进行处理。如果是这样,它是否只能使用目标 c 访问,或者也可以使用其他语言?
【问题讨论】:
标签: objective-c macos webcam isight
是否可以通过编程方式访问 macbook 上的 iSight 摄像头?我的意思是我希望能够根据命令从 iSight 相机中抓取静止帧,然后对它们进行处理。如果是这样,它是否只能使用目标 c 访问,或者也可以使用其他语言?
【问题讨论】:
标签: objective-c macos webcam isight
我这里没有 Mac,但这里有一些文档:
看来您必须通过 QuickTime API。根据this thread,应该有一个名为“MungGrab”的示例项目值得一看。
【讨论】:
除了 ObjC,您还可以使用 PyObjC 或 RubyCocoa 绑定来访问它。如果您对哪种语言不挑剔,我会说使用 Ruby,因为 PyObjC 的文档记录非常糟糕(甚至 Apple 官方页面也指的是旧版本,而不是 OS X Leopard 附带的版本)
Quartz Composer 可能是访问它的最简单方法,并且 .quartz 文件可以很容易地嵌入到应用程序中(并将数据通过管道输出到 ObjC 等)
另外,我想 /Developer/Examples/ 中应该有一两个这样的例子
【讨论】:
有一个名为@987654321@ 的命令行实用程序或多或少可以执行您想要执行的操作。您可能可以从开发人员那里获得代码(他的电子邮件地址在您下载实用程序时获得的自述文件中)。
【讨论】:
您应该查看QTKit Capture documentation。
在 Leopard 上,您可以通过 RubyCocoa 桥获得所有内容:
require 'osx/cocoa'
OSX.require_framework("/System/Library/Frameworks/QTKit.framework")
OSX::QTCaptureDevice.inputDevices.each do |device|
puts device.localizedDisplayName
end
【讨论】:
如果您浏览 Apple 的邮件列表,您也可以找到一些 Java 代码。 Here's a simple example suitable for capturing individual frames 和 here's a more complicated one that's fast enough to display live video。
【讨论】:
到目前为止尚未提及的一件事是 IKPictureTaker,它是 Image Kit 的一部分。这将提供标准操作系统提供的面板来拍照,包括所有可能的过滤器功能等。我不确定这是否是你想要的。
我想你也可以从其他语言中使用它,考虑到像 cocoa bridges 这样的东西,但我没有使用它们的经验。
谷歌搜索还提出了another question on stackoverflow,似乎可以解决这个问题。
【讨论】:
从专门要求解决方案为 pythonic 的相关问题中,您应该尝试来自 Andrew Straw 的 motmot's camiface 库。它也适用于火线相机,但也适用于 isight,这正是您所寻找的。p>
来自教程:
import motmot.cam_iface.cam_iface_ctypes as cam_iface
import numpy as np
mode_num = 0
device_num = 0
num_buffers = 32
cam = cam_iface.Camera(device_num,num_buffers,mode_num)
cam.start_camera()
frame = np.asarray(cam.grab_next_frame_blocking())
print 'grabbed frame with shape %s'%(frame.shape,)
【讨论】: