Symbian 7.0以上的版本使用CCamera来访问摄像头。
CCamera提供了一个可用于应用程序交互和获取照相机图像的接口。CCamera封装了一系列易于使用的API,同时,它提供了一个MCameraObserver注册到CCamera,通知应用程序各种关键事件。必须实现MCameraObserver的所有纯虚方法供系统在事件产生的时候回调。
要捕捉一幅图像,首先需要创建一个CCamera的实例。调用CCamera::NewL(MCameraObserver&,TInt):
iCamera = CCamera::NewL(aObserver,0);
然后我们需要保留照相机设备:
User::LeaveIfError(iCamera->Reserve());
这个异步函数成功返回的时候系统会调用MCameraObserver::ReserveComplete()方法。下一步我们要通过PowerOn()函数开启它。这也是一个异步方法,当操作完成时,他调用MCameraObserver::ReserveComplete()。
iCamera->PowerOn();
在使用CaptureImage()之前,我们需要指定图像的格式和大小。TCameraInfo::iImageFrameFormatsSupported提供对格式的支持,CCamera::EnumerateCaptureSizes()提供对大小的支持。使用CCamera::PrepareImageCaptureL()来指定图像格式和大小。拍摄照片之前,至少调用一次该函数。
iCamera->PrepareImageCaptureL(CCamera::EFormatFbsBitmapColor4K,1);
然后我们可以照相了。
iCamera->CaptureImage();
当捕捉成功后,将调用MCameraObserver::ImageReady()。应用程序使用完照相机后,应释放照相机。
iCamera->Release();
CCamera还提供了闪光模式、光学和数字变焦、亮度、对比度、曝光等设置功能,依赖于设备的硬件能力。
CCamera提供了一个可用于应用程序交互和获取照相机图像的接口。CCamera封装了一系列易于使用的API,同时,它提供了一个MCameraObserver注册到CCamera,通知应用程序各种关键事件。必须实现MCameraObserver的所有纯虚方法供系统在事件产生的时候回调。
要捕捉一幅图像,首先需要创建一个CCamera的实例。调用CCamera::NewL(MCameraObserver&,TInt):
iCamera = CCamera::NewL(aObserver,0);
然后我们需要保留照相机设备:
User::LeaveIfError(iCamera->Reserve());
这个异步函数成功返回的时候系统会调用MCameraObserver::ReserveComplete()方法。下一步我们要通过PowerOn()函数开启它。这也是一个异步方法,当操作完成时,他调用MCameraObserver::ReserveComplete()。
iCamera->PowerOn();
在使用CaptureImage()之前,我们需要指定图像的格式和大小。TCameraInfo::iImageFrameFormatsSupported提供对格式的支持,CCamera::EnumerateCaptureSizes()提供对大小的支持。使用CCamera::PrepareImageCaptureL()来指定图像格式和大小。拍摄照片之前,至少调用一次该函数。
iCamera->PrepareImageCaptureL(CCamera::EFormatFbsBitmapColor4K,1);
然后我们可以照相了。
iCamera->CaptureImage();
当捕捉成功后,将调用MCameraObserver::ImageReady()。应用程序使用完照相机后,应释放照相机。
iCamera->Release();
CCamera还提供了闪光模式、光学和数字变焦、亮度、对比度、曝光等设置功能,依赖于设备的硬件能力。
本文介绍如何使用Symbian7.0以上版本的CCamera接口访问摄像头并捕捉图像。包括创建CCamera实例、保留和开启摄像头设备、设置图像格式与大小、拍摄照片及释放摄像头资源等步骤。
2480

被折叠的 条评论
为什么被折叠?



