我想计算 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/