以编程方式访问iSight?

时间:2008-08-12 15:31:40

标签: objective-c macos webcam isight

是否可以通过编程方式访问macbook上的iSight摄像头?通过这个我的意思是我希望能够在命令中从iSight摄像头抓取静止帧,然后用它们做一些事情。如果是这样,是否只能使用目标c访问,还是可以使用其他语言?

7 个答案:

答案 0 :(得分:9)

您应该查看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

答案 1 :(得分:4)

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

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

看起来你必须通过QuickTime API。根据{{​​3}},应该有一个名为“MungGrab”的示例项目值得一看。

答案 2 :(得分:2)

如果你围绕Apple的邮件列表,你可以找到一些用Java编写的代码。 Here's a simple example suitable for capturing individual frameshere's a more complicated one that's fast enough to display live video

答案 3 :(得分:1)

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

我想你也可以在其他语言中使用它,考虑到像cocoa bridges这样的东西,但我对它们没有经验。

谷歌搜索也提出another question on stackoverflow似乎解决了这个问题。

答案 4 :(得分:1)

有一个名为isightcapture的命令行实用程序可以或多或少地执行您想要执行的操作。您可以从开发人员那里获取代码(他的电子邮件地址在您下载该实用程序时获得的自述文件中)。

答案 5 :(得分:0)

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

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

另外,我想在/ Developer / Examples /

中应该有一个或两个这样的例子

答案 6 :(得分:0)

从一个特别要求解决方案为pythonic的相关问题中,您应该尝试安德鲁·斯特劳的motmot's 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,)