7

是否可以通过编程方式访问 macbook 上的 iSight 摄像头?我的意思是我希望能够根据命令从 iSight 相机中抓取静止帧,然后对它们进行处理。如果是这样,它是否只能使用目标 c 访问,或者也可以使用其他语言?

4

7 回答 7

9

您应该查看QTKit Capture 文档

在 Leopard 上,您可以通过 RubyCocoa 桥获得所有内容:

require 'osx/cocoa'
OSX.require_framework("/System/Library/Frameworks/QTKit.framework")

OSX::QTCaptureDevice.inputDevices.each do |device|
    puts device.localizedDisplayName
end
于 2008-08-14T05:28:59.683 回答
4

我这里没有 Mac,但这里有一些文档:

http://developer.apple.com/documentation/Hardware/Conceptual/iSightProgGuide/01introduction/chapter_1_section_1.html

看起来您必须通过 QuickTime API。应该有一个名为“MungGrab”的示例项目,根据这个线程可能值得一看。

于 2008-08-12T15:39:32.727 回答
2

如果您浏览 Apple 的邮件列表,您也可以找到一些用 Java 编写的代码。这是一个适合捕获单个帧的简单示例这是一个更复杂的示例,它的速度足以显示实时视频

于 2008-08-14T14:56:14.633 回答
1

到目前为止还没有提到的一件事是IKPictureTaker,它是 Image Kit 的一部分。这将提供标准操作系统提供的面板来拍照,包括所有可能的过滤器功能等。我不确定这是否是你想要的。

我想你也可以从其他语言中使用它,考虑到有可可桥之类的东西,但我没有使用它们的经验。

谷歌搜索还提出了另一个关于 stackoverflow的问题,似乎解决了这个问题。

于 2008-11-11T14:08:14.907 回答
1

There's a command line utility called isightcapture that does more or less what you want to do. You could probably get the code from the developer (his e-mail address is in the readme you get when you download the utility).

于 2008-08-13T15:49:52.143 回答
0

除了 ObjC,您还可以使用 PyObjC 或 RubyCocoa 绑定来访问它。如果您对哪种语言不挑剔,我会说使用 Ruby,因为 PyObjC 的文档记录非常糟糕(甚至 Apple 官方页面也指的是旧版本,而不是 OS X Leopard 附带的版本)

Quartz Composer 可能是访问它的最简单方法,并且 .quartz 文件可以很容易地嵌入到应用程序中(并且数据通过管道输出到 ObjC 等)

另外,我想 /Developer/Examples/ 中应该有一个或两个这样的例子

于 2008-08-12T18:53:01.120 回答
0

从专门要求解决方案为 pythonic 的相关问题中,您应该尝试使用Andrew Straw的 motmot 的 camiface库。它也适用于火线相机,但也适用于您正在寻找的 isight。

从教程:

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,)
于 2010-02-03T15:35:58.283 回答