我有很多图像,周围有厚厚的白色边框。删除/隔离这些边框的最简单方法是什么?无论如何,我可以使用OpenCV来做到这一点吗?
答案 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)
一种方法是使用四叉树分解,使得边界区域是“叶子”节点。然后你可以减去它。