我正在编写一个将视频从网络摄像头流式传输到 android 设备的应用程序。流式客户端是用 C++ 编写的,并使用 imencode 压缩图像,以便它们可以通过 UDP 发送。我有一个模拟“接收器”,也是用 C++ 编写的,它可以接收图像并显示它们。我正在将接收器移植到 Android,并且只使用 opencv java sdk(我不是在编写自己的 JNI 东西)。将接收到的字节数组转换为 Mat 然后是位图的代码如下 -
Mat frame = Highgui.imdecode(new MatOfByte(packet.getData()), 0);
bm = Bitmap.createBitmap(frame.cols(), frame.rows(),Bitmap.Config.ARGB_8888);
Utils.matToBitmap(frame, bm);
im.post(new Runnable() {
@Override
public void run() {
im.setImageBitmap(bm);
}
});
调用Util.matToBitmap
给出以下错误 -
OpenCV Error: Assertion failed (AndroidBitmap_lockPixels(env, bitmap, &pixels) >= 0) in void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean), file /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp, line 99 03-04 19:04:46.337 15034-15148/ E/org.opencv.android.Utils﹕ nMatToBitmap catched cv::Exception: /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp:99: error: (-215) AndroidBitmap_lockPixels(env, bitmap, &pixels) >= 0 in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean) 03-04 19:04:46.452 15034-15148/E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-924
这只是对以前使用 TCP 的工作代码的轻微修改,我找不到这个错误的实际含义。有谁知道发生了什么?或者关于如何调试我没有编写的 JNI 代码的任何建议?