攝像頭編程
一、要點
1.CCamera類---提供操作攝像頭的各種API.
調用CCamera::NewL()靜態函數創建一個攝像頭對象,函數原型:
static CCamera::NewL(MCameraObserver& aObserver,TInt aCameraIndex);
第一各參數時偵聽類對象,第二個時攝像頭設備的編號。
創建了攝像頭對象后,應該調用它的Reserve()保留攝像頭。
2.MCameraObserver---偵聽接口類
class MCameraObserver
{
public:
virtual void ReseverComplete(TInt aError)=0;
virtual void PowerOnComplete(TInt aError)=0;
virtual void ViewFinderFrameReady(CFbsBitmao& aFrame)=0;
virtual void ImageReady(CFbsBitmao* aBitmap,HBufC8* aData,TInt
aError)=0;
}
二、步驟
1.創建和初始化
(1)聲明observer
class CImageCapturerEngine : public CBase, public MCameraObserver
{
public: // Observer interface
class MObserver
{
public:
virtual void OnFrame(const CFbsBitmap& aFrame)=0;
virtual void OnImage(CFbsBitmap* aBitmap)=0;
virtual void OnError(TInt aError)=0;
};
public: // Static constants
static const TInt KDefaultImageWidth;
static const TInt KDefaultImageHeight;
static const CCamera::TFormat KDefaultImageFormat;
static const TInt KDefaultImageIndex;
public: // Constructors and destructor
/**
* Two-phased constructor.
*/
static CImageCapturerEngine* NewL(MObserver& aObserver);
/**
* Destructor.
*/
~CImageCapturerEngine();
private:
/**
* EPOC default constructor.
*/
CImageCapturerEngine(MObserver& aObserver);
void ConstructL();
public: // Functions from MCameraObserver
/**
* Indicates camera reservation is complete.
* Called asynchronously when CCamera::Reserve() completes.
* @param aError: An error on failure and KErrNone on success
*/
void ReserveComplete(TInt aError);
/**
* Indicates camera power on is complete.
* Called on completion of CCamera:PowerOn().
* @param aError: An error on failure and KErrNone on success
*/
void PowerOnComplete(TInt aError);
/**
* Called periodically in response to the use of
* CCamera::StartViewFinderBitmapsL().
* @param aFrame: A view finder frame
*/
void ViewFinderFrameReady(CFbsBitmap& aFrame);
/**
* Called asynchronously when CCamera::CaptureImage() completes.
* Transfers the current image from the camera to the client.
* @param aBitmap: An image held in CFbsBitmap form if this
was the
* format specified in CCamera::PrepareImageCaptureL().
* @param aData: a pointer to an HBufC8 if this was the format
* specified in CCamera::PrepareImageCaptureL().
* @param aError KErrNone on success or an error code on failure
*/
void ImageReady(CFbsBitmap* aBitmap,HBufC8* aData,TInt aError);
/**
* Called asynchronously when a buffer has been filled with
the
* required number of video frames by CCamera::StartVideoCapture().
* Passes a filled frame buffer to the client.
* @param aFrameBuffer: A pointer to an MFrameBuffer if successful,
or
* NULL if not successful.
* @param aError: KErrNone on success or an error code on failure
*/
void FrameBufferReady(MFrameBuffer* aFrameBuffer,TInt aError);
public: // new public methods
/**
* Start the view finder
*/
void StartViewFinderL();
/**
* Stop the view finder
*/
void StopViewFinder();
/**
* Asynchronously performs still image capture.
* Calls MCameraObserver::ImageReady() when complete.
*/
void CaptureImage();
private: // new private methods
/**
* Performs setup and allocation of memory.
* Called prior to calling CaptureImage() to keep the latency
of that
* function to a minimum. Needs to be called only once for
multiple
* CaptureImage() calls.
* May leave with KErrNotSupported or KErrNoMemory
* @param aImageFormat: The image format, must be one of the
formats
* supported (see TCameraInfo::iImageFormatsSupported)
*/
void PrepareImageCaptureL(CCamera::TFormat aImageFormat);
private: // member variables
/**
*
*/
MObserver& iObserver;
/**
* The camera object
*/
CCamera* iCamera;
/**
* The resolution of the captured image.
*/
TSize iSize;
};
#endif
完整版本請見http://www.xmnhcmf.cn
曙海教育
曙海嵌入式
(MTK培訓,Android培訓,FPGA培訓,DSP培訓,iPhone培訓,Symbian培訓)
上海總部電話:021-51875830 深圳:4008699035 北京:010-51292078
網址:http://www.51qianru.cn
版權所有-曙海教育 轉發請注明出處
|