我只是想使用洪水填充,但它失败了,而且我从未使用过它,所以我认为我做错了什么。
Mat flooded=new Mat();
Point flood=new Point(1,1);
// floodedmat = Mat.zeros(myMat2.size(), CvType.CV_8UC1);
Imgproc.floodFill(myMat2, flooded, flood, new Scalar(255, 255, 255));
Utils.matToBitmap(flooded, copy);
洪水填充后,我打算将其返回位图以显示它,以便我看到更改。
您应该使用带有附加参数的重载的floodFill方法:
Imgproc.floodFill(myMat2, flooded, flood, new Scalar(255, 255, 255), new Rect(), lowerDiff, upperDiff, 4);
新的 Rect() 对象是一个边界矩形,它将包含您的洪水填充;lowerDiff
and upperDiff
应该用与原始像素值不同的值来初始化标量(即:如果它是颜色值不同的 RGB 图像,可以说在您的种子点(洪水)处有一个亮黄色像素,并且它周围有一个稍小的像素值)明亮或稍亮的黄色像素,它将用白色矩形填充它们)。您想用 3 个值初始化它们,即:
Scalar lowerDiff = new Scalar(10, 10, 10);
最后的整数参数是洪水填充实际上应该考虑多少个相邻像素,默认值是 4,另一个选项是 8。 (4 将采用北部、东部、西部和南部像素,而 8 将采用北部、东北部、东部、东南部等像素)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)