EasyAR 将相机帧作为 OpenCV Mat 访问
EasyAR access Camera Frames as OpenCV Mat
我正在使用 EasyAR 在 android 上使用 C++ 开发一个应用程序,我正在尝试将 opencv 与它一起使用,我想要实现的是:获取它从中获得的 easyAR 框架相机作为 Mat 并使用 opencv 进行一些处理,然后 return 要查看的帧。
为什么要这么做?简单地说我只是在EasyAR相机框架跨平台访问之后(我觉得它真的很快,我只是构建了示例HelloAR)
在Sample HelloAR中,有一行
auto frame = streamer->peek();
有没有办法将其转换为在 openCV 中使用?
在 IOS 和 Android(最小 API 16)中是否有另一种从 c++ 访问相机帧的方法?
感谢您的帮助,谢谢。
这是示例 link,我正在使用 HelloAR
http://s3-us-west-2.amazonaws.com/easyar/sdk/EasyAR_SDK_2.0.0_Basic_Samples_Android_2017-05-29.tar.xz
好的,我设法解决了这个问题
所以简单的框架(EasyAR 中的 class 框架)包含图像向量(同一帧可能是不同的图像),访问该向量 returns 一个图像对象,方法称为数据(字节数组)和可用于在 opencv
中初始化 Mat
这是为任何搜索相同内容的人澄清的代码
unsigned char* imageBuffer = static_cast<unsigned char*>(frame->images().at(0)->data());
int height = frame->images()[0]->height(); // height of the image
int width = frame->images()[0]->width(); // width of image
// Obtained Frame is YUV21 by default, so convert that to RGBA
cv::Mat _yuv(height+height/2, width, CV_8UC1, imageBuffer);
cv::cvtColor(_yuv, _yuv, CV_YUV2RGBA_NV21);
我正在使用 EasyAR 在 android 上使用 C++ 开发一个应用程序,我正在尝试将 opencv 与它一起使用,我想要实现的是:获取它从中获得的 easyAR 框架相机作为 Mat 并使用 opencv 进行一些处理,然后 return 要查看的帧。
为什么要这么做?简单地说我只是在EasyAR相机框架跨平台访问之后(我觉得它真的很快,我只是构建了示例HelloAR)
在Sample HelloAR中,有一行 auto frame = streamer->peek();
有没有办法将其转换为在 openCV 中使用?
在 IOS 和 Android(最小 API 16)中是否有另一种从 c++ 访问相机帧的方法?
感谢您的帮助,谢谢。
这是示例 link,我正在使用 HelloAR http://s3-us-west-2.amazonaws.com/easyar/sdk/EasyAR_SDK_2.0.0_Basic_Samples_Android_2017-05-29.tar.xz
好的,我设法解决了这个问题 所以简单的框架(EasyAR 中的 class 框架)包含图像向量(同一帧可能是不同的图像),访问该向量 returns 一个图像对象,方法称为数据(字节数组)和可用于在 opencv
中初始化 Mat这是为任何搜索相同内容的人澄清的代码
unsigned char* imageBuffer = static_cast<unsigned char*>(frame->images().at(0)->data());
int height = frame->images()[0]->height(); // height of the image
int width = frame->images()[0]->width(); // width of image
// Obtained Frame is YUV21 by default, so convert that to RGBA
cv::Mat _yuv(height+height/2, width, CV_8UC1, imageBuffer);
cv::cvtColor(_yuv, _yuv, CV_YUV2RGBA_NV21);