在android 中通过传 yuv420 数据给 opencv 进行人脸检测要怎么做?

zxrzhuo 2016-09-18 06:16:31
数据是在 C++ 里的一个回调函数里给出的,
struct VideoFrame {
VIDEO_FRAME_TYPE type;
int width; //width of video frame
int height; //height of video frame
int yStride; //stride of Y data buffer
int uStride; //stride of U data buffer
int vStride; //stride of V data buffer
void* yBuffer; //Y data buffer
void* uBuffer; //U data buffer
void* vBuffer; //V data buffer
int rotation; // rotation of this frame (0, 90, 180, 270)
};

现在需要把数据给opencv做人脸检测,请问需要怎么做?
...全文
545 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxrzhuo 2016-09-19
  • 打赏
  • 举报
回复
这样写把 yuv420 转换成 Mat矩阵可以吗? //将y,u,v通道合并 IplImage* yimg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1); cvSetData(yimg, videoFrame.yBuffer, width); IplImage* uuimg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1); cvSetData(uuimg, videoFrame.uBuffer, width); IplImage* vvimg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1); cvSetData(vvimg, videoFrame.vBuffer, width); IplImage* yuvimg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3); cvMerge(yimg, uuimg, vvimg, null, yuvimg); //将yuv格式转换为常用的rgb格式 IplImage* rgbimg = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3); cvCvtColor(yuvimg, rgbimg, CV_YCrCb2BGR); //rgb转 Mat cv::Mat m = cv::cvarrToMat(rgbimg);
LoveWyf_ 2016-09-18
  • 打赏
  • 举报
回复
opencv没用过,腾讯的人脸识别就是调用一下api,网络传递数据它内部也封装好了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧