cvgetmat

时间:2015-12-15 02:15:59

标签: java opencv

问题标题似乎是重复的,我同意这一点,但情况并不相同。所以我找不到适合我的解决方案。

当我尝试将Mat分配给BackgroundSubtractorMOG2BackgroundSubtractorKNN时,我收到错误。

执行流程如下:

  • 通过TCP Socket获取JPEG图像的字节数组。 没问题
  • 将字节数组转换为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。当我使用网络摄像头或阅读视频文件并且同样的流程没有问题发生时,它会很顺利。

现在出现这个问题的原因是什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用正学习率(apply()方法的最后一个参数)。

尝试一些像0.01这样的小值。

修改

注意到-1是默认值,并在内部转换为值>= 0