当前位置: 首页 > news >正文

海报生成器在线制作股票发行ipo和seo是什么意思

海报生成器在线制作,股票发行ipo和seo是什么意思,做期货看啥子网站,怎么样建设一个网上教学网站【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: Camera相机人脸识别系列专题分析之十九:MTK平台FDNode传递三方FFD到APP流程解析 目录 一、背景 二…

【关注我,后续持续新增专题博文,谢谢!!!】

上一篇我们讲了

        这一篇我们开始讲 Camera相机人脸识别系列专题分析之十九:MTK平台FDNode传递三方FFD到APP流程解析

目录

一、背景

二、:OcamMeta传递FFD到APP

    2.1:OcamMeta

    2.2 :OcamMeta::process更新FFD

    2.3 :setFfdData2App


一、背景

        我们知道app和hal属于两个不同进程,而进程间通信在camera领域一个重要的知识点就是camerameta,最典型的就是存放3A信息,我们也可以客制化存在FFD相关信息,来实现进程间通信。

二、:OcamMeta传递FFD到APP

    2.1:OcamMeta

        ocam_meta.cpp是对camera meta统一管理,之前的FFD数据就是在这里通过写入meta中,最后APP会读取meta来完成获取HAL的FFD数据。

        而核心流程是CamThread::CamThreadHandle::threadLoop线程中,通过enqueNode最后调用到OcamMeta::process来完成meta的更新。

    2.2 :OcamMeta::process更新FFD

OcamMeta::process函数中,会更新很多camera相关meta,FFD相关meta最终是通过setFfdData2App来完成

MERROR OcamMeta::process(RequestPtr pRequest, RequestCallbackPtr pCallback)
{if( pRequest != NULL ){IMetadata *pIMetadataDynamic1  = acquire(pRequest->mIMetadataDynamic1);IMetadata *pOMetadataApp     = acquire(pRequest->mOMetadataApp);IMetadata *pOMetadataHal     = acquire(pRequest->mOMetadataHal);mDataMetaToAsync.mFaceNum = 0;thirdFaceDataAppJoint facedata;memset(&facedata, 0, sizeof(thirdFaceDataAppJoint));if (pIMetadataHal1 != NULL) {MINT64 p1timestamp = 0;IMetadata::IEntry entryP1Timestamp = pRequest->mIMetadataHal1->acquire()->entryFor(MTK_P1NODE_FRAME_START_TIMESTAMP);if (!entryP1Timestamp.isEmpty()) {p1timestamp = entryP1Timestamp.itemAt(0, Type2Type<MINT64>());} else {MY_LOGE("Cant get p1 timestamp meta.");}auto fdReader = IFDContainer::createInstance(LOG_TAG, IFDContainer::eFDContainer_Opt_Read);if (fdReader != NULL) {MBOOL fdResult = MFALSE;FD_DATATYPE fdData;fdResult = fdReader->cloneLatestFD(fdData, mOpenID);if (fdResult) {mFDdata = std::make_shared<FD_DATATYPE>();fdData.clone(*mFDdata);mDataMetaToAsync.mFaceNum = mFDdata->facedata.number_of_faces;MY_LOGD_IF(mLogDebug, "FDNode Result FaceNum(%d),openID(%d)", mFDdata->facedata.number_of_faces, mOpenID);} else {MY_LOGI("fdData is not found");}} else {MY_LOGD_IF(mLogDebug, "Can not get FDContainer");}if (mDataMetaToAsync.mIsUseCusFd) {if (thirdIFDContainer::hasInstance(thirdIFDContainer::third_eFDContainer_Opt_Read)) {auto thirdFdReader = thirdIFDContainer::createInstance(LOG_TAG, thirdIFDContainer::third_eFDContainer_Opt_Read);auto fdData = thirdFdReader->queryLock(p1timestamp - FD_TOLERENCE, p1timestamp);if (fdData.size() > 0) {auto fdChunk = fdData.back();facedata = fdChunk->thirdFaceData;if (mDataMetaToAsync.mBeautyLevel > 0 && fdChunk->sensorId == mOpenID) {setFfdData2App(facedata, pOMetadataApp);}}thirdFdReader->queryUnlock(fdData);}}

    2.3 :setFfdData2App

流程如下:

  1. 创建:IMetadata::IEntry faceInfoEntry(third_CONTROL_CAPTURE_FB_FACE_INFO);
  2. 写入各种FFD数据结构字段:faceInfoEntry.push_back
  3. 更新meta:pOMetadataApp->update(third_CONTROL_CAPTURE_FB_FACE_INFO, faceInfoEntry);
  4. APP会去读这个tag拿到meta,并解析各个FFD字段,拿到FFD各种变量。
void OcamMeta::setFfdData2App(thirdFaceDataAppJoint facedata, IMetadata* pOMetadataApp)
{MSize fdImgSize(facedata.fdProcessInfo.ImgSize.w, facedata.fdProcessInfo.ImgSize.h);int face_count = 0;face_count = facedata.faceInfoOri.face_num;for (MINT32 i = 0; i < face_count; i++) {int32_t left = (int32_t)facedata.faceInfoOri.face_roi[i].faceRect.left;int32_t top = (int32_t)facedata.faceInfoOri.face_roi[i].faceRect.top;int32_t right = (int32_t)facedata.faceInfoOri.face_roi[i].faceRect.width + left;int32_t bottom = (int32_t)facedata.faceInfoOri.face_roi[i].faceRect.height + top;convertCoord(left, top, fdImgSize, facedata.fdProcessInfo);convertCoord(right, bottom, fdImgSize, facedata.fdProcessInfo);facedata.faceInfoOri.face_roi[i].faceRect.left = left;facedata.faceInfoOri.face_roi[i].faceRect.top = top;facedata.faceInfoOri.face_roi[i].faceRect.width = right - left;facedata.faceInfoOri.face_roi[i].faceRect.height = bottom - top;}for (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {for (MINT32 j = 0; j < MAX_FFD_NUM; j++) {convertCoord(facedata.faceInfoOri.ffd_data[i].x[j],facedata.faceInfoOri.ffd_data[i].y[j],fdImgSize, facedata.fdProcessInfo);}}for (MINT32 i = 0; i < MAX_FACE_ROIS; i++) {for (MINT32 j = 0; j < MAX_FFD_NUM_512; j++) {convertCoord(facedata.ffd296Data.ffdData[i].x[j],facedata.ffd296Data.ffdData[i].y[j],fdImgSize, facedata.fdProcessInfo);}}if (pOMetadataApp) {IMetadata::IEntry faceInfoEntry(third_CONTROL_CAPTURE_FB_FACE_INFO);int face_num = 0;faceInfoEntry.push_back(facedata.faceInfoOri.versionId,Type2Type<MINT32>());face_num = facedata.faceInfoOri.face_num ? facedata.faceInfoOri.face_num : mDataMetaToAsync.mFaceNum;faceInfoEntry.push_back(face_num,Type2Type<MINT32>());faceInfoEntry.push_back(facedata.faceInfoOri.master_index,Type2Type<MINT32>());faceInfoEntry.push_back(facedata.faceInfoOri.points_count,Type2Type<MINT32>());for (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.age[i],Type2Type<MINT32>());}for (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.gender[i],Type2Type<MINT32>());}for (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {for (MINT32 j = 0; j < MAX_FFD_NUM; j++) {faceInfoEntry.push_back(facedata.faceInfoOri.ffd_data[i].x[j],Type2Type<MINT32>());}for (MINT32 j = 0; j < MAX_FFD_NUM; j++) {faceInfoEntry.push_back(facedata.faceInfoOri.ffd_data[i].y[j],Type2Type<MINT32>());}for (MINT32 j = 0; j < MAX_FFD_NUM; j++) {faceInfoEntry.push_back(facedata.faceInfoOri.ffd_data[i].occlusion[j],Type2Type<MINT32>());}}for (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.yaw[i],Type2Type<MINT32>());}for (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.pitch[i],Type2Type<MINT32>());}for (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.roll[i],Type2Type<MINT32>());}for (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.faceLuma[i],Type2Type<MINT32>());}// for decide the back lightingfaceInfoEntry.push_back(facedata.faceInfoOri.faceLumaRatio,Type2Type<MINT32>());//colorTemperaturefaceInfoEntry.push_back(facedata.faceInfoOri.colorTemperature,Type2Type<MINT32>());//lip_HSVfor (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM * HSV_CHANNEL_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.lip_HSV[i],Type2Type<MINT32>());}//isofacedata.faceInfoOri.iso = mDataMetaToAsync.mIsoValue;faceInfoEntry.push_back(facedata.faceInfoOri.iso,Type2Type<MINT32>());//featurefor (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.feature[i],Type2Type<MINT32>());}//faceidfor (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.faceid[i],Type2Type<MINT32>());}//faceRectfor (MINT32 i = 0; i < MAX_ATTRI_FACE_NUM; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.face_roi[i].faceRect.left,Type2Type<MINT32>());faceInfoEntry.push_back(facedata.faceInfoOri.face_roi[i].faceRect.top,Type2Type<MINT32>());faceInfoEntry.push_back(facedata.faceInfoOri.face_roi[i].faceRect.width,Type2Type<MINT32>());faceInfoEntry.push_back(facedata.faceInfoOri.face_roi[i].faceRect.height,Type2Type<MINT32>());}faceInfoEntry.push_back(facedata.faceInfoOri.fdDimensionW,Type2Type<MINT32>());faceInfoEntry.push_back(facedata.faceInfoOri.fdDimensionH,Type2Type<MINT32>());// reserveMINT32 RESERVE_ITEM1 = 4;// reservefor (MINT32 i = 0; i < RESERVE_ITEM1; i++) {faceInfoEntry.push_back(facedata.faceInfoOri.reserve[i],Type2Type<MINT32>());}pOMetadataApp->update(third_CONTROL_CAPTURE_FB_FACE_INFO, faceInfoEntry);// send ffd data to appIMetadata::IEntry ffdInfoEntry(third_CONTROL_CAPTURE_FFDPOINTS_INFO);for (MINT32 i = 0; i < MAX_FACE_ROIS; i++)  {for (MINT32 j = 0; j < MAX_FFD_NUM_512; j++) {ffdInfoEntry.push_back(facedata.ffd296Data.ffdData[i].x[j],Type2Type<MINT32>());}for (MINT32 j = 0; j < MAX_FFD_NUM_512; j++) {ffdInfoEntry.push_back(facedata.ffd296Data.ffdData[i].y[j],Type2Type<MINT32>());}for (MINT32 j = 0; j < MAX_FFD_NUM_512; j++) {ffdInfoEntry.push_back(facedata.ffd296Data.ffdData[i].occlusion[j],Type2Type<MINT32>());}}ffdInfoEntry.push_back(facedata.ffd296Data.pointsCount,Type2Type<MINT32>());pOMetadataApp->update(third_CONTROL_CAPTURE_FFDPOINTS_INFO, ffdInfoEntry);}
}

【关注我,后续持续新增专题博文,谢谢!!!】

下一篇讲解

http://www.dtcms.com/a/551554.html

相关文章:

  • pageadmin做网站要钱吗深圳做网站排名
  • 郑州网站推广价格wordpress模板文件结构
  • 注册网站花的钱做会计分录包装设计需要学什么软件
  • 烟台网站建设方案推广软件大全链接网站
  • 用英文介绍购物网站layui框架的wordpress
  • 专做婴儿的网站接做名片的网站
  • 有哪些好的响应式网站有哪些辽宁网站建设
  • 山西做网站wordpress技术博客
  • 谷歌网站为什么打不开三维立体图制作软件app
  • 做婚庆策划的网站做网站放广告赚钱
  • 巴州住房和城乡建设局网站wordpress分类目录网址优化
  • 做淘宝的导购网站浙江建设厅继续教育网站
  • asp网站怎么打开WordPress头像ssl
  • 做电商网站报价wordpress多站点cdn
  • 东莞网站建设aj兴平网站开发
  • 网站维护提醒php文件荣耀手机官网入口
  • 做网站需要去哪里备案手机网站版面设计
  • seo站内站怎么做咨询公司名字大全
  • 网站建设流程分为三个步骤wordpress自动跳转相近链接
  • PS做网站页面尺寸摄影网站网络促销方式
  • 黄冈做网站技术支持的wordpress 高清头像
  • 成年做羞羞的视频网站深圳做分销网站的公司
  • 网站搭建公司哪家好wordpress 评论删除
  • 关于建网站新闻一键提交收录
  • 云南省网站备案要求近期新闻热点事件及评论
  • 如何做php网站南通网站优化公司
  • 苏南网站建设互联网营销
  • 网站首页静态好还是动态好本科自考是什么意思
  • 建一个商城网站多少钱优秀的个人博客网站
  • 河南双师培训网站深圳制作网站搜行者seo