0
C++を使用してAndroid上でOpenCVとGLES20を使っていくつかの基本操作を開始しようとしています。OpenCVでglReadPixelsの画像を処理し、テクスチャとして返す
CameraGLSurfaceViewとそのコールバックonCameraTexture(...)を使用して、自分のネイティブライブラリに渡します。
コールがうまく流れていて、フレームバッファをベクトルに読み込んでテクスチャに渡すことができ、期待通りに機能します。
しかし、ピクセルで作業しようとすると、イメージが壊れてしまいます。
私のC++コード:
cv::Mat in(w,h,CV_8UC4);
cv::Mat out(w,h,CV_8UC4);
glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, in.data);
// following operations break image >>
cv::cvtColor(in, out, CV_RGBA2BGRA);
cv::flip(out, in, 0);
cv::cvtColor(in, out, CV_BGRA2RGBA);
// << prev operations break image
glBindTexture(GL_TEXTURE_2D, (GLuint) tex2);
glTexImage2D(GL_TEXTURE_2D,
0,
GL_RGBA,
w,
h,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
out.ptr());
glBindTexture(GL_TEXTURE_2D, 0);
in.release();
out.release();
署名操作の絵なしテクスチャに行くとうまく表示されています。
私は間違いがOpenGLとOpenCVの間でフォーマットを変換していることを理解します。
形式を正しく変換するにはどうすればよいですか?