使用OpenCV去除背景以使文本更清晰。

6
我正在尝试创建一个可以从图像中读取文本的应用程序。但是我现在遇到了清除背景的问题。我的目标是获得以下结果:
输入图像1: enter image description here 输出图像1: enter image description here 这是我尝试过的代码:
cvtColor(org, tmp, CV_BGR2GRAY); 
normalize(tmp, tmp, 0, 255, NORM_MINMAX); 
threshold(tmp, dst, 0, 255, CV_THRESH_OTSU);

我的问题与它不同。 - patrick
  1. cvtColor(org, tmp, CV_BGR2GRAY);
  2. normalize(tmp, tmp, 0, 255, NORM_MINMAX);
  3. threshold(tmp, dst, 0, 255, CV_THRESH_OTSU);
  4. cvtColor(org,tmp,CV_BGR2GRAY);
  5. normalize(tmp,tmp,0,255,NORM_MINMAX);
  6. threshold(tmp,dst,0,255,CV_THRESH_OTSU);
- patrick
1个回答

0
你感兴趣的线条分别以0度或90度为方向,稍微有一点偏移。背景图案中的线条是斜着的。可以使用Canny算法识别线条,然后检查其方向。这样会在垂直和水平线相交处留下一些空白,这取决于字体。然后返回原始图像,基于颜色使用Watershed算法,或使用连接组件,或者其他方法来避免失去那些连接区域。

实际上,背景并不一定总是填充线条。它可以是任何东西。我想要一些通用的东西。 - patrick
@HemantKumar 你说你想要一个通用的东西。你的示例图像有多具有代表性?数字是否总是比图像的其余部分具有更高的强度?你应该明确你的期望。 - beaker
@beaker 不需要,数字可能具有较低的强度。 - patrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接