在图像中查找空白区域以填充另一个图像

时间:2012-10-16 05:16:12

标签: android image canvas

我想在图像中找到空白区域(它的x-y坐标);从那里我需要填补那个空白区域的另一个图像。

Empty area to be found for this image

2 个答案:

答案 0 :(得分:1)

空白区域是指白色矩形吗?

我这样做的方法是我按像素运行像素(x轴/ y轴)搜索一个完全白色的像素,一旦找到这个像素,我就会运行一个方法,从那开始像素,沿着X轴上的直线验证像素,并根据我想要插入的图像的宽度和高度的量来验证Y轴的像素。如果它们在这两条线上都是白色,那么我会在长度为math.sqrt(width*width + height*height)的对角线上再次运行它,如果它全部为白色,我可以在那里填充图像,如果不是,请继续搜索从对角线的末端开始。

虽然不是搜索白色像素,但我宁愿搜索完全透明的像素(0 alpha)。我认为这对你的图像很有用,但是如果碰巧有另外一个图像有3条线条,它们的尾部和白色一致,那么它就会失败。只是不要......那样做。

不是只检查那些线,而是可以实际验证该矩形中的所有像素,但这可能会很慢并且不适用于您的图像,因为您碰巧在空白区域的底部有这样的高程。

答案 1 :(得分:1)

你想在图像中找到WHITE点然后在下面尝试。 我希望它会对你有所帮助,但它会在图像中返回所有白点,而不仅仅是空白区域。

            Bitmap mBitmap = YOUR BITMAP;

            ArrayList<Point> whitePoint = new ArrayList<Point>();
            for (int i = 0; i < mBitmap.getWidth(); i++) {
                for (int j = 0; j < mBitmap.getHeight(); j++) {
                    if(mBitmap.getPixel(i, j) == Color.WHITE)
                    {
                        whitePoint.add(new Point(i, j));
                    }
                }
            }

我建议在空白区域使用TRANSPARENT颜色并检查TRANSPARENT而不是WHITE颜色