是否可以通过编程方式访问macbook上的iSight摄像头?通过这个我的意思是我希望能够在命令中从iSight摄像头抓取静止帧,然后用它们做一些事情。如果是这样,是否只能使用目标c访问,还是可以使用其他语言?
答案 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,但这里有一些文档:
看起来你必须通过QuickTime API。根据{{3}},应该有一个名为“MungGrab”的示例项目值得一看。
答案 2 :(得分:2)
如果你围绕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。
答案 3 :(得分:1)
有一个名为isightcapture
的命令行实用程序可以或多或少地执行您想要执行的操作。您可以从开发人员那里获取代码(他的电子邮件地址在您下载该实用程序时获得的自述文件中)。
答案 4 :(得分:1)
到目前为止尚未提及的一件事是IKPictureTaker,它是Image Kit的一部分。这将提供标准操作系统提供的面板来拍照,包括所有可能的过滤功能等。我不确定这是不是你想要的。
我想你也可以在其他语言中使用它,考虑到像cocoa bridges这样的东西,但我对它们没有经验。
谷歌搜索也提出another question on stackoverflow似乎解决了这个问题。
答案 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,)