玩瞳文档中心


相机

<h2>前言</h2> <p>该文档为绘本项目Linux端App所用到的 <strong>Camera Api</strong> 相关说明, 首先,用户需要编写新的Camera类继承VTCameraAbs抽象类,并实现相应的虚类。 新编写的Camera类模块需提供如下功能:(VTCameraAbs抽象类已有体现)</p> <ul> <li>开启/初始化/关闭摄像头;</li> <li>开始/关闭预览,输出Camera的预览帧数据,格式为YUV NV21(YUV420sp);</li> <li>可以对相机的一些参数(预览/拍照分辨率等常规参数);</li> <li>提供拍照接口或者yuv转jpeg数据的硬编码接口,输出jpeg格式的图像数据;</li> </ul> <p>相应的头文件在demo源程序内可以找到</p> <h3>1. 回调类</h3> <h4>1.1 VTPreviewCallback</h4> <p>回调接口,用于接收Camera预览时的预览帧数据。</p> <p>回调函数:</p> <table> <thead> <tr> <th>名称</th> <th>函数原型</th> </tr> </thead> <tbody> <tr> <td>onPreviewFrame</td> <td>virtual void onPreviewFrame(void *data, int size, VTCamera* pCamera)</td> </tr> </tbody> </table> <p>回调函数参数说明:</p> <table> <thead> <tr> <th>参数</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>data</td> <td>VTCameraAbs::startPreview 开启预览后,返回的图片数据类型指针</td> </tr> <tr> <td>size</td> <td>图片数据的长度,字节数</td> </tr> <tr> <td>pCamera</td> <td>VTCameraAbs的实例,由VTCameraAbs::open()生成</td> </tr> </tbody> </table> <h4>1.2 VTPictureCallback</h4> <p>回调接口,用于从获取相机图像帧数据。</p> <p>回调函数:</p> <table> <thead> <tr> <th>名称</th> <th>函数原型</th> </tr> </thead> <tbody> <tr> <td>onPictureTaken</td> <td>virtual void onPictureTaken(void *data, int size, VTCamera* pCamera) = 0</td> </tr> </tbody> </table> <p>回调函数参数说明:</p> <table> <thead> <tr> <th>参数</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>data</td> <td>takePicture 返回的图片数据类型指针,默认格式为JPEG,注意与预览格式不一样</td> </tr> <tr> <td>size</td> <td>图片数据的长度,字节数</td> </tr> <tr> <td>pCamera</td> <td>VTCameraAbs的实例,由VTCameraAbs::open()生成</td> </tr> </tbody> </table> <h4>1.3 VTErrorCallback</h4> <p>回调接口,错误代码及描述。</p> <p>回调函数:</p> <table> <thead> <tr> <th>名称</th> <th>函数原型</th> </tr> </thead> <tbody> <tr> <td>onError</td> <td>virtual void onError(int error, VTCamera *pCamera) = 0</td> </tr> </tbody> </table> <p>回调函数参数说明:</p> <table> <thead> <tr> <th>参数</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>error</td> <td>错误代码,用以标注Camera打开或者运行的一些错误</td> </tr> <tr> <td>pCamera</td> <td>VTCameraAbs的实例,由VTCameraAbs::open()生成</td> </tr> </tbody> </table> <h3>2 VTCameraAbs 接口</h3> <h4>2.1 open</h4> <table> <thead> <tr> <th>函数原型</th> <th>int open();</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>创建一个VTCameraAbs实例,关联到指定的camera ID</td> </tr> <tr> <td>参数</td> <td>无</td> </tr> <tr> <td>返回值</td> <td>0 打开成功 -1 打开失败</td> </tr> <tr> <td>调用说明</td> <td>无</td> </tr> </tbody> </table> <h4>2.2 release</h4> <table> <thead> <tr> <th>函数原型</th> <th>void release();</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>断开Camera,释放Camera资源</td> </tr> <tr> <td>参数</td> <td>无</td> </tr> <tr> <td>返回值</td> <td>无</td> </tr> <tr> <td>调用说明</td> <td>无</td> </tr> </tbody> </table> <h4>2.3 startPreview</h4> <table> <thead> <tr> <th>函数原型</th> <th>int startPreview();</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>启动相机预览</td> </tr> <tr> <td>参数</td> <td>无</td> </tr> <tr> <td>返回值</td> <td>成功返回0,否则返回错误代码</td> </tr> <tr> <td>调用说明</td> <td>启动后camera每采集一帧图像,都会调用显示接口显示预览图像,以及回调每帧的图像数据</td> </tr> </tbody> </table> <h4>2.4 stopPreview</h4> <table> <thead> <tr> <th>函数原型</th> <th>void stopPreview();</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>停止预览</td> </tr> <tr> <td>参数</td> <td>无</td> </tr> <tr> <td>返回值</td> <td>成功返回0,否则返回错误代码</td> </tr> <tr> <td>调用说明</td> <td>无</td> </tr> </tbody> </table> <h4>2.5 takePicture</h4> <table> <thead> <tr> <th>函数原型</th> <th>void takePicture();</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>拍照</td> </tr> <tr> <td>参数</td> <td>无</td> </tr> <tr> <td>返回值</td> <td>无</td> </tr> <tr> <td>调用说明</td> <td>这是一个异步函数,调用后立即返回。根据注册callback函数setTakePictureCallback,将图像数据传出来。</td> </tr> </tbody> </table> <h4>2.6 setErrorCallback</h4> <table> <thead> <tr> <th>函数原型</th> <th>void setErrorCallback(VTErrorCallback *pCb);</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>设置error信息的callback</td> </tr> <tr> <td>参数</td> <td>pCb:发送error消息的callback类,详细见1.1章的VTErrorCallback</td> </tr> <tr> <td>返回值</td> <td>无</td> </tr> <tr> <td>调用说明</td> <td>无</td> </tr> </tbody> </table> <h4>2.7 setPreviewCallback</h4> <table> <thead> <tr> <th>函数原型</th> <th>void setPreviewCallback(VTPreviewCallback*pCb);</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>设置接收预览数据的callback</td> </tr> <tr> <td>参数</td> <td>pCb:接收数据的callback类,详细见1.1章的VTPreviewCallback</td> </tr> <tr> <td>返回值</td> <td>无</td> </tr> <tr> <td>调用说明</td> <td>无</td> </tr> </tbody> </table> <h4>2.8 setTakePictureCallback</h4> <table> <thead> <tr> <th>函数原型</th> <th>void setTakePictureCallback(VTPictureCallback*pCb);</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>设置接收拍照数据的callback</td> </tr> <tr> <td>参数</td> <td>pCb:接收数据的callback类,详细见1.1章的VTPictureCallback</td> </tr> <tr> <td>返回值</td> <td>无</td> </tr> <tr> <td>调用说明</td> <td>无</td> </tr> </tbody> </table> <h4>2.9 getPreviewSize</h4> <table> <thead> <tr> <th>函数原型</th> <th>void getPreviewSize(VTSize &amp;size)</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>获取预览分辨率</td> </tr> <tr> <td>参数</td> <td>size:预览数据的尺寸</td> </tr> <tr> <td>返回值</td> <td>无</td> </tr> <tr> <td>调用说明</td> <td>无</td> </tr> </tbody> </table> <h4>2.10 getPictureSize</h4> <table> <thead> <tr> <th>函数原型</th> <th>void getPictureSize(VTSize &amp;size)</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>获取拍照的分辨率</td> </tr> <tr> <td>参数</td> <td>size:拍照数据的尺寸</td> </tr> <tr> <td>返回值</td> <td>无</td> </tr> <tr> <td>调用说明</td> <td>无</td> </tr> </tbody> </table> <h4>2.11 convertYUV2JPEG</h4> <table> <thead> <tr> <th>函数原型</th> <th>int convertYUV2JPEG(const void *yuvData, int yuvSize, void *jpegData, int &amp;jpegSize)</th> </tr> </thead> <tbody> <tr> <td>功能</td> <td>yuv数据转jpeg数据硬编码接口</td> </tr> <tr> <td>参数</td> <td>yuvData:yuv数据指针 yuvsize: yuv数据长度 jpegData: 输出的jpeg数据, jpegsize:输出的jpeg数据长度</td> </tr> <tr> <td>返回值</td> <td>0 编码成功 -1 编码失败</td> </tr> <tr> <td>调用说明</td> <td>无</td> </tr> </tbody> </table>

页面列表

ITEM_HTML