2017-09-10 6 views
0

私はEasyARを使用してC++を使ってアンドロイドでアプリケーションを開発しています&私はopencvを使用しようとしていますが、達成しようとしているのは:easyARフレームMatteとしてカメラから取得し、opencvを使っていくつかの処理を行い、次にフレームを返して表示します。EasyARアクセスOpenCVマットとしてのカメラフレーム

どうしてですか? (私はそれが本当に高速だと思う、私はちょうどサンプルHelloARを構築しました)

サンプルHelloARには、 のauto frame = streamer-> peek();という行があります。

  1. openCVで使用するためにこれを変換する方法はありますか?

  2. IOS(&)Android(Min API 16)と両方でC++からカメラフレームにアクセスする別の方法がありますか?

ご協力いただきありがとうございます。ここ

は、サンプルのリンクです、私はオーケーHelloAR http://s3-us-west-2.amazonaws.com/easyar/sdk/EasyAR_SDK_2.0.0_Basic_Samples_Android_2017-05-29.tar.xz

答えて

0

を使用しています、私はおそらく、異なる画像(そう単にフレーム(EasyARのクラスフレーム)は、画像のベクトルが含まれています。この のための解決策を得ることができましたそのベクトルにアクセスすると、dataというメソッド(バイト配列)を持つImageオブジェクトが返され、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); 
関連する問題