cvtColor在OpenCV for Java中工作不正常
因此,我尝试使用cvtColor在OpenCV for Java中工作不正常,java,android,opencv,Java,Android,Opencv,因此,我尝试使用CalcOpticalFlowPyrlk方法,它不断抛出断言失败: OpenCV Error: Assertion failed ((npoints = prevPtsMat.checkVector(2, CV_32F, true)) >= 0) checkVector检查输入矩阵是否为2通道,颜色深度是否为CV_32F。我的输入是一个有4个通道的垫子,颜色深度为CV_8U。当我尝试转换它时,它无法每次都更改。我曾经 Mat prevFrame; // The inpu
CalcOpticalFlowPyrlk
方法,它不断抛出断言失败:
OpenCV Error: Assertion failed ((npoints = prevPtsMat.checkVector(2, CV_32F, true)) >= 0)
checkVector检查输入矩阵是否为2通道,颜色深度是否为CV_32F。我的输入是一个有4个通道的垫子,颜色深度为CV_8U。当我尝试转换它时,它无法每次都更改。我曾经
Mat prevFrame; // The input Mat. Grabbed from CvCameraViewFrame. Converted to rgb
Mat prev = new Mat(rows,cols, CvType.CV_32F);
Imgproc.cvtColor(prevFrame, prev, Imgproc.COLOR_BGRA2GRAY);
prev.convertTo(prev, CvType.CV_32F);
但当我检查后,上一个有正确的深度(CV_32F),但只有一个元素通道。我已经为此挣扎了好几个小时,但我不知道问题出在哪里prevPtsMat向量上的断言失败了,它是
calcOpticalFlowPyrLK
调用的第三个参数。这里定义的矩阵似乎是第一个参数,它应该是一个单通道图像。
我假设您正在为第三个参数使用points数组,您可能需要为points数组显式创建一个MatOfPoint2f()
。我认为这已在以下章节中描述:
刚刚看到你在2013年3月20日发布了这篇文章。我以为你几个小时前就把这个贴出来了