android - Utils.matToBitmap 中的 src.type 断言失败

标签 android opencv

我想计算 OpticalFlow 然后显示它,但我得到了错误。 我的代码:

Bitmap resultBitmap = mResultBitmaps.poll();
Imgproc.cvtColor(image, image, Imgproc.COLOR_BGR2GRAY);
Mat flow = new Mat(image.size(), CvType.CV_8UC1);
Video.calcOpticalFlowFarneback(image, Prev_image, flow,0.5,1, 1, 1, 7,1.5,1);
Utils.matToBitmap(flow, resultBitmap, true);

但是我得到这个错误:

断言失败 (src.type() == CV_8UC1 || src.type() == CV_8UC3 || src.type() == CV_8UC4) in void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong​​, jobject , bool 值)

当我调试流程时:

Mat [ 320*320*CV_32FC2, isCont=true, isSubmat=false, nativeObj=0x77dd5148, dataAddr=0x77c7e010 ]

我能做什么?

最佳答案

flow 是一个 2 channel 的 32 位 float 。正如错误所说,输入需要是 CV_8U 1、3 或 4 channel 。您需要决定如何表示 2 channel 数据。例如,拆分 channel 并使用 convertTo 将每个 channel 转换为 CV_8U 以提供两张图像。

关于android - Utils.matToBitmap 中的 src.type 断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23171954/

相关文章:

android - 改变TextInputLayout的 float 标签文本的位置

c++ - 在 opencv 中传递 IplImage 指针

opencv - 卸载 winmmbase.dll visual studio 2015

python - 从套接字数据转换为numpy数组

image-processing - OpenCV - 图像拼接

opencv - 如何将 k4a_image_t 转换为 opencv 矩阵? (Azure Kinect 传感器 SDK)

在 android 中添加 google place API 时出现 java.lang.IllegalStateException

android - 如何为用于内部分发的 Android 构建 APK?

java - 动态添加LinearLayout到ListView中

android - 如何在xml(值文件夹中的dimens.xml)中设置宽高比以根据设备设置不同的宽高比?