在程序中使用Mac Camera的示例代码?
我想通过程序在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,)
在此示例神经科学演示中使用了它