使用opencv删除图像边框

时间:2011-02-13 05:44:46

标签: image image-processing opencv border

我有很多图像,周围有厚厚的白色边框。删除/隔离这些边框的最简单方法是什么?无论如何,我可以使用OpenCV来做到这一点吗?

2 个答案:

答案 0 :(得分:0)

这不是一个非常优雅的解决方案,但这是我的第一次尝试。

            if( direction == BORDER_SEARCH_DIRECTION.TOP || 
            direction == BORDER_SEARCH_DIRECTION.BOTTOM )
        {
            for (int y = startY; y >= 0 && y < _image.Height; y += deltaY)
            {
                bool foundNonWhite = false;
                for (int x = startX; x < _image.Width; x += deltaX)
                {
                    if (Convert.ToInt32(_image.ManagedArray.GetValue(y, x, 0)) < BORDER_WHITENESS_THRESHOLD)
                    {
                        foundNonWhite = true;
                        break;
                    }
                }
                if (!foundNonWhite)
                {
                    borderAt = y;
                    break;
                }
            }
        }

基本上,这假设边框最多从顶部/底部开始进入图像的五分之一处,并且它会搜索完全“白色”的第一行。我运行例程两次,如果我在图像的顶部和底部找到一整行白色,我认为我们有一个边框。

该死的东西需要250毫秒。

答案 1 :(得分:-1)

一种方法是使用四叉树分解,使得边界区域是“叶子”节点。然后你可以减去它。