在程序中使用Mac Camera的示例代码?

时间:2020-03-05 18:51:45  来源:igfitidea点击:

我想通过程序在Macbook中使用相机。我相当与语言无关的C,Java,Python等都很好。有人可以建议寻找文档或者" Hello world"类型代码的最佳位置吗?

解决方案

回答

Leopard中的ImageKit框架具有一个IKPictureTaker类,通过该类,我们可以运行在iChat和其他应用程序中看到的标准照相纸或者面板。

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

这两种方法都需要在Objective-C中编写一些Cocoa代码,但是如今这实际上并不应该成为障碍。

回答

有一个名为isightcapture的实用程序,该实用程序从UNIX命令行运行,该命令行会从isight相机拍摄图片并保存。

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

与AppleScript一起使用的一个示例是:

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

回答

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

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

回答

如果适用,Quartz Composer也是一种捕获和处理视频的令人愉悦的方式。有一个视频输入补丁。

Quartz Composer是一个可视化的编程环境,可以根据需要集成到较大的Cocoa程序中。

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

回答

从一个专门要求解决方案是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,)

在此示例神经科学演示中使用了它