13

我想在程序中使用我的 Macbook 中的相机。我与语言无关——C、Java、Python 等都很好。谁能建议寻找文档或“Hello world”类型代码的最佳位置?

4

6 回答 6

7

Leopard 中的 ImageKit 框架有一个IKPictureTaker类,可以让您运行您在 iChat 和其他应用程序中看到的标准拍照表或面板。

如果您不想使用标准的拍照面板/工作表界面,您可以使用QTKit Capture功能从 iSight 获取图像。

这两者都需要在 Objective-C 中编写一些 Cocoa 代码,但如今这不应该成为真正的障碍。

于 2008-09-11T19:53:24.250 回答
2

如果您想直接从您的代码中操作相机,您必须使用 QuickTime Capture API 或Cocoa QTKit Capture包装器(更好)。

唯一需要注意的是:如果您使用 QTCaptureDecompressedVideoOutput,请记住回调不是在主线程上进行的,而是在 QuickTIme 管理的捕获线程上进行的。使用 [someObject performSelectorOnMainThread:... withObject:... waitUntilDone:NO] 将消息发送到主线程上的对象。

于 2008-09-12T08:23:44.913 回答
1

有一个名为 isightcapture 的实用程序,它从 unix 命令行运行,从 isight 相机拍摄照片并保存。

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

将其与 AppleScript 一起使用的示例是:

告诉应用程序“终端”执行脚本“/Applications/isightcapture myimage.jpg”结束告诉

于 2008-09-11T19:57:55.270 回答
1

从专门要求解决方案为 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-03T21:50:37.593 回答
0

Quartz Composer 也是一种在适用时捕捉和处理视频的好方法。有一个视频输入补丁。

Quartz Composer 是一个可视化编程环境,如果需要,它可以集成到更大的 Cocoa 程序中。

http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html

于 2008-09-18T07:07:44.190 回答
0

另一种解决方案是OpenCV+python,其脚本如下:

import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)

不能再简单了!

于 2011-01-23T22:32:22.353 回答