在程序中使用mac camera的示例代码?

时间:2008-09-11 19:37:27

标签: cocoa language-agnostic macos camera

我想在程序中使用Macbook中的相机。我对语言无关 - C,Java,Python等都很好。任何人都可以建议寻找文件或“Hello world”类型代码的最佳位置吗?

6 个答案:

答案 0 :(得分:7)

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

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

这两个都需要在Objective-C中编写一些Cocoa代码,但这些日子不应该成为障碍。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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

使用AppleScript的一个例子是:

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

答案 3 :(得分:1)

从一个特别要求解决方案为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,)

sample neuroscience demo

中使用它

答案 4 :(得分:0)

当适用时,Quartz Composer也是一种捕获和处理视频的愉快方式。有一个视频输入补丁。

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

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

答案 5 :(得分:0)

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

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

不能做任何更简单的事情!