我想开发一个可以从图像中读取文本的应用程序。我必须清理图像的背景。我听说fred的imagemagick textcleaner脚本可以使用,但我不知道如何使用它。有没有人有任何想法呢?如何在opencv中使用fred的imagemagick textcleaner脚本C++/opencv java?
输入图像:
我想开发一个可以从图像中读取文本的应用程序。我必须清理图像的背景。我听说fred的imagemagick textcleaner脚本可以使用,但我不知道如何使用它。有没有人有任何想法呢?如何在opencv中使用fred的imagemagick textcleaner脚本C++/opencv java?
输入图像:
没有看到你的数据首先很难猜测。如果你有相当统一的背景,你可以使用自适应阈值去除背景。
以下是关于如何使用自适应阈值的theoretical informations。该算法在OpenCV中实现。
我试过了,虽然新闻不好,但它仍然是一个答案,即使是负面的。也许有人想进一步采取我的努力,或者你觉得我的努力确认textcleaner
是不是要走的路。无论如何,我把你的形象,并写了一个脚本来改变最有前途的参数弗雷德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
这给了我所有的结果这蒙太奇
为了我的眼睛,最有前途的是也许F = 10,O = 1,t = 1时
然后我想到“为什么要看看我喜欢什么,让我们来看看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
在这里可能是错误的方法。
感谢您的支持。除了可以使用的textcleaner之外,你还知道其他什么吗? – patrick 2015-04-03 13:07:03
可悲的是我不这样做,对不起。 – 2015-04-03 13:10:20
我已经使用自适应阈值,但它不工作。我已添加输入图像,请检查。 – patrick 2015-04-02 08:36:01