Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 背景减法器抛出';函数cvGetMat'中的数组类型无法识别或不受支持;例外情况_Java_Opencv_Javacv_Background Substraction - Fatal编程技术网

Java 背景减法器抛出';函数cvGetMat'中的数组类型无法识别或不受支持;例外情况

Java 背景减法器抛出';函数cvGetMat'中的数组类型无法识别或不受支持;例外情况,java,opencv,javacv,background-substraction,Java,Opencv,Javacv,Background Substraction,我为这个问题找了很多,但没有找到任何解决办法 我有一个程序,它通过套接字接收JPEG格式的文件数据(以字节为单位),然后我将字节数组转换为OpenCV Mat对象,如下所示: Mat mat = Imgcodecs.imdecode(new MatOfByte(byteArray), Imgcodecs.CV_LOAD_IMAGE_UNCHANGED); 它转换得很好,没有任何异常,然后(为了测试用例以确保数据正常),我将Mat对象转换为BufferedImage,然后在JPanel中显示它,

我为这个问题找了很多,但没有找到任何解决办法

我有一个程序,它通过套接字接收JPEG格式的文件数据(以字节为单位),然后我将字节数组转换为
OpenCV Mat
对象,如下所示:

Mat mat = Imgcodecs.imdecode(new MatOfByte(byteArray), Imgcodecs.CV_LOAD_IMAGE_UNCHANGED);
它转换得很好,没有任何异常,然后(为了测试用例以确保数据正常),我将
Mat
对象转换为
BufferedImage
,然后在
JPanel
中显示它,一切正常,没有任何异常

但是当我申请时:

mog2.apply(mat, foregroundImg, -1); // tried 1, 0, 0.003 etc

knn.apply(mat, foregroundImg, -1); // tried 1, 0, 0.003 etc
mat
BackgroundSubtractor
(任何
BackgroundSubtractorMOG2
backgroundsubtractorkn
)然后抛出异常,并显示以下消息:

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\core\src\array.cpp, line 2494
然后我将
Mat
的类型更改如下,但抛出相同的错误

Mat newMat = new Mat();
mat.convertTo(newMat, CvType.CV_8UC3)

对于测试,我已经在这个
mat
上做了一些其他操作,以确保它可以与其他OpenCV函数一起工作,但是它都工作得很好比如:

变灰

Imgproc.cvtColor(mat, grayImg, Imgproc.COLOR_RGB2GRAY);
Do阈值

Imgproc.threshold(grayImg, grayImg, 100, 255, Imgproc.THRESH_BINARY);
等等……一切正常

特例:如果我使用网络摄像头(集成或USB摄像头)或从视频文件读取帧,一切都会顺利进行,没有任何例外

现在我不知道为什么会发生此错误或异常,这是
背景减法器的错误还是数据中有任何错误


特别提示:我使用的是
Java
Languange中的OpenCV最新版本(3.0)

您好Bahramdun,我是OpenCV新手。你能帮我在java中初始化背景减法器mog2吗。我做不到。嗨!很容易,您只需执行以下操作即可:
mog2=Video.createBackgroundSubtractorMOG2()
knn=Video.createBackgroundSubtractorKNN()
并且最好像'mog2.setShadowValue(0);'谢谢。。。我感谢你的帮助,非常欢迎!祝你好运!!