基于ccc接入摄像头实现人脸识别的问题

游戏考虑接入人脸识别登录,目前考虑使用opencv来打开摄像头操作。
考虑方式如下:

  1. 集成opencv (已完成,要自己编译32位的lib库,然后集成到ccc编译的windows工程中);
  2. 打开摄像头,然后获取数据;
  3. 将获取到的数据传给Sprite进行渲染。

现在发现opencv获取到的是一个Mat结构的数据,这个数据怎么返回给js层呢?
Mat frame; Mat edges; bool stop = false; while (!stop) { cap >> frame; imshow("读取视频", frame); // cb(frame); }
主要是这个frame变量怎么通过se::Value返回给js层呢?

或者我的思路不对呢? 求解

https://juejin.im/post/6865260341115224071?utm_source=gold_browser_extension。参考一下这个,

这个和我的需求没关系吧? 我要把摄像头采集到的图像传给js去渲染。 现在卡在怎么把c++层采集的信息(一个Mat结构)传递给js。 这个Mat怎么转换一下,可以传给js层。

需要先将i420(yuv)数据转换为argb(opengl可渲染)的数据

再将COCOS_TEXTURE对象数据传给JS.

转为RGBA cv::cvtColor(m, dst, CV_BGR2RGBA);
Cocos Data 类型 _data->copy(dst.data, dst.cols*dst.rows * 4);

转给 js 用Data_to_seval(cobj->getData(), &s.rval());

我觉得最好能在c++层生成纹理或者sprite传到js

肯定是这样呀,yuv转换为rgba数据,生成texture,然后传给js

我开始也想在C++生成texture,后来没有找到creator中对应的方法 initWithData,好像是creator渲染架构改了, 看到js有相关代码,于是就先把Data数据从c++传过去

唯一找到的一个相关教程 Cocos2d-xとOpenCVで動画スプライト