在程序中使用Mac摄像头的示例代码?

13

我想在一个程序中使用我的Macbook相机。我对编程语言并不挑剔——C、Java、Python等都可以。请问有人能指导我在哪里找到相关文档或“Hello world”类型的代码吗?

6个回答

7
Leopard中的ImageKit框架具有一个 IKPictureTaker 类,可以让您运行标准的拍照面板,就像在iChat和其他应用程序中看到的那样。
如果您不想使用标准的拍照面板/表单界面,则可以使用QTKit Capture功能从iSight获取图像。
这两种方法都需要使用Objective-C编写一些Cocoa代码,但这在今天不应该是障碍。

如果有人能实现这个,我很乐意看到一些示例代码。也许可以直接通过ctypes实现? - meduz

2
如果您想直接从代码中操作相机,则必须使用QuickTime Capture API或Cocoa QTKit Capture包装器(更好)。唯一的注意事项是:如果您使用QTCaptureDecompressedVideoOutput,请记住回调不是在主线程上进行的,而是在QuickTIme管理的捕获线程上进行的。使用[someObject performSelectorOnMainThread:... withObject:... waitUntilDone:NO]将消息发送到主线程上的对象。

1

从一个相关的问题中,特别要求解决方案是Pythonic的,你应该尝试一下Andrew Straw的motmot's camiface库。它也可以与Firewire相机一起使用,但也可以与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,)

它在这个示例神经科学演示中使用。


1

有一个叫做isightcapture的实用程序可以从Unix命令行运行,从isight相机拍摄照片并保存。

您可以在此网站上查看它:http://www.macupdate.com/info.php/id/18598

使用AppleScript的示例:

tell application "Terminal" do script "/Applications/isightcapture myimage.jpg" end tell


0
另一个解决方案是使用OpenCV+python和以下脚本:
import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)

没法更简单了!


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接