Java OpenCV泛洪填充不一致

Java OpenCV泛洪填充不一致,java,opencv,flood-fill,Java,Opencv,Flood Fill,目前我正在用Java处理OpenCV,但我遇到了一个问题。我不能让洪水填充正常工作 我要做的是在一个矩形内填充一个区域。图像为纯黑色,矩形由4条连接线组成。我想把这个长方形漆成白色。问题是,这似乎并不一致。即使输入/代码不变,输出也可能不同。有时,我得到一个完全白色的矩形,有时我得到这样的东西: 现在,我试着让我的代码尽可能赤裸裸,并用它进行测试。守则: publicstaticvoidmain(字符串[]args){ System.loadLibrary(Core.NATIVE\u LIBR

目前我正在用Java处理OpenCV,但我遇到了一个问题。我不能让洪水填充正常工作

我要做的是在一个矩形内填充一个区域。图像为纯黑色,矩形由4条连接线组成。我想把这个长方形漆成白色。问题是,这似乎并不一致。即使输入/代码不变,输出也可能不同。有时,我得到一个完全白色的矩形,有时我得到这样的东西:

现在,我试着让我的代码尽可能赤裸裸,并用它进行测试。守则:

publicstaticvoidmain(字符串[]args){
System.loadLibrary(Core.NATIVE\u LIBRARY\u NAME);
列表点=新的ArrayList();
增加(新的第(40105)点);
增加(新的点(35475));
增加(新的点(385110));
增加(新的点(385485));
对于(int i=0;i<100;i++){
Mat mask=新Mat(558408,CvType.CV_8UC3,新标量(0,0,0));
Imgproc.line(掩码,points.get(0),points.get(1),新标量(255),1);
Imgproc.line(掩码,points.get(0),points.get(2),新标量(255),1);
Imgproc.line(掩码,points.get(3),points.get(1),新标量(255),1);
Imgproc.line(掩码,points.get(3),points.get(2),新标量(255),1);
Mat存根=新Mat(mask.rows()+2,mask.cols()+2,CvType.CV_8U);
Imgproc.floodFill(遮罩、存根、Imgproc.Minareact(新MatOfPoint2f(points.toArray)(新点[4]))、中心、新标量(255、255、255));
Imgcodecs.imwrite(“out”+i+“.png”,掩码);
}
}
这样一来,错误似乎就不那么明显了,尽管有时我仍然会得到这样的结果:


我真的不知道我做错了什么。我好像忽略了什么?我也不知道循环中75%的图像是如何完美的,但有些图像显示了这些伪影,伪影也是随机的…

我无法重现您的问题。不过,你可以用它来做这些。@Miki很抱歉回答得太晚了,但这似乎有效。不过,洪水泛滥的问题仍未解决。