问题标题似乎是重复的,我同意这一点,但情况并不相同。所以我找不到适合我的解决方案。
当我尝试将Mat分配给BackgroundSubtractorMOG2
或BackgroundSubtractorKNN
时,我收到错误。
执行流程如下:
将字节数组转换为Mat,如下面的代码所示。 没问题
Mat mat = Imgcodecs.imdecode(new MatOfByte(sJpegPicBuffer), Imgcodecs.CV_LOAD_IMAGE_UNCHANGED);
如果需要转换为灰度,也可以转换 成功。 没问题
将Mat转换为BufferedImage。 没问题
然后在JPanel中显示BufferedImage。 没问题
但是
将问题分配给BackgroundSubtractor
时,问题就发生了。 问题
subtractor.apply(mat, foregroundImg , -1);
注意: 我在Java中使用OpenCV 3.0。当我使用网络摄像头或阅读视频文件并且同样的流程没有问题发生时,它会很顺利。
现在出现这个问题的原因是什么?
提前致谢!
答案 0 :(得分:0)
使用正学习率(apply()
方法的最后一个参数)。
尝试一些像0.01这样的小值。
修改强>
注意到-1是默认值,并在内部转换为值>= 0
。