如何在opencv c ++ / opencv java中使用fred的imagemagick textcleaner脚本?

时间:2015-04-02 05:26:15

标签: opencv image-processing tesseract opencv4android

我正在尝试开发一款可以从图片中读取文字的应用。我必须清理图像的背景。我听说fred的imagemagick textcleaner脚本可以使用,但我不知道如何使用它。有没有人对此有任何想法?

输入图片:

enter image description here

2 个答案:

答案 0 :(得分:8)

我试过这个,虽然新闻不好,但它仍然是一个答案,即使是否定的。也许其他人想要进一步努力,或者你觉得我的努力证实textcleaner不是要走的路。无论如何,我拍摄了你的照片并编写了一个脚本来改变Fred Weinhaus textcleaner最有希望的参数。我认为可能有帮助的是-f-o-t,并且我通过它们可能的范围来改变这些:

#!/bin/bash
for f in 1 5 10 15 20 25; do
   for o in 1 3 6 9 12; do
      for t in 1 25 50 75 100; do
         ./textcleaner -f $f -o $o -t $t cc.jpg z_${f}_${o}_${t}.png
         convert -label "f=$f, o=$o, t=$t" z_${f}_${o}_${t}.png miff:-
      done
   done
done | montage - -frame 5 -tile 6x montage.png

这给了我所有结果的蒙太奇

enter image description here

在我看来,最有希望的可能是f = 10,o = 1,t = 1

enter image description here

然后我想"为什么还要看看我喜欢什么,让我们看看Tesseract喜欢什么?" 。所以我将脚本更改为此,以便Tesseract查看所有排列:

#!/bin/bash
for f in 1 5 10 15 20 25; do
   for o in 1 3 6 9 12; do
      for t in 1 25 50 75 100; do
         ./textcleaner -f $f -o $o -t $t cc.jpg z_${f}_${o}_${t}.png
         tesseract z_${f}_${o}_${t}.png res > /dev/null 2>&1
         if grep "[0-9]" res* ; then echo z_${f}_${o}_${t}.png ;fi
      done
   done
done

结果很糟糕......这是输出

um 0-" V _
L"“1}- H
z_5_3_50.png
:1:J£‘u  “
z_15_3_75.png
”':{E]!)  /3: '55‘
z_15_6_75.png
 E2?
z_15_9_1.png
:1:
z_15_12_100.png
I -.352}:  "H ,1 5
z_20_12_25.png
1/
, ,5». 3».
z_25_6_75.png
 3
z_25_9_25.png
 - ::'§—:am I-:L’5‘:*‘f§~f.’i'7""“-‘-"I 5="
z_25_12_1.png
7 3:2‘
z_25_12_75.png

甚至没有任何远程用途。也许其他人对如何调整它以及调整哪些参数有更好的了解,但我怀疑textcleaner可能是错误的方法。

答案 1 :(得分:0)

没有先查看您的数据,很难猜到。如果你有相当统一的背景,你可以使用自适应阈值来删除背景。

以下是关于如何使用自适应阈值的一些theoretical informations。该算法在OpenCV中实现。