【发布时间】:2015-11-23 06:30:37
【问题描述】:
我正在使用 opencv android 转换 BitmapToMat 图像。当我将 Mat 图像从 android 传递给本机代码 (c++) 时,图像通道发生了变化。 我们直接传递 Mat 图像而不进行转换(bitmaptomat),图像通道保持不变。
还有其他有效的方法可以将图像从 android 传递到本机 c++。 有没有使用 OpenGL ES 的可能性.. 谢谢
【问题讨论】:
我正在使用 opencv android 转换 BitmapToMat 图像。当我将 Mat 图像从 android 传递给本机代码 (c++) 时,图像通道发生了变化。 我们直接传递 Mat 图像而不进行转换(bitmaptomat),图像通道保持不变。
还有其他有效的方法可以将图像从 android 传递到本机 c++。 有没有使用 OpenGL ES 的可能性.. 谢谢
【问题讨论】:
您可以通过将 Bitmap 的字节直接传递给 C++ 来实现: 在 java 中: 声明你的本地方法
public native void bmpToJNI(byte[] myArray);
Bitmap bmp;
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
在 C++ 文件中,方法的声明:
JNIEXPORT void JNICALL Java_your_package_your_activity_bmpToJNI( JNIEnv* env,jobject thiz, jbyteArrayarray) {...}
不过,你能准确地说出频道的变化方式吗?
【讨论】: