2016-08-03 14 views
-1

与えられたピクチャをスレッショルドで事前処理してTesseractに渡したいと思います。最初にGimp(2.8.16)と130〜255の固定範囲を使っていました.Javaを使ってOpenCV(3.1)で実装したとき、まずcvtColorを呼び出すのを忘れました。 (これらの領域はGimpの白い部分でした)。それ以外は、期待どおりの映像でした。しかし、私が対応するコールを実装したとき、私は予想していたものとは異なるピクチャを得ました。以前に色付けされた領域は黒色になり、残りの画像はGimpで作成したものと似ているようです。OpenCVスレッシュホールドが期待通りでない

もっと類似した出力を作成するために欠けていることはありますか?

私はこの質問をしていた理由は、残念ながら、たTesseractは(PSM 6で)二つの画像はかなり異なる結果作成することです:Gimpの中に作成したものについて

  • :「2011年1 Lを0006」 "2011ÔÇö] L 0 0006 1" ここ

は、私が使用されるコードである:

Mat thres = new Mat(); 
Mat tmp = new Mat(); 
Imgproc.cvtColor(src, tmp, Imgproc.COLOR_BGR2GRAY); // tmp = src.clone(); in my first attempt 
Imgproc.threshold(tmp, thres, 130, 255, Imgproc.THRESH_BINARY); 
Imgcodecs.imwrite("output.jpg", thres); 
0123のOpenCVを用いて生成された第2のいずれかの
  • ここ

    は絵は以下のとおりです。絵を考えると

    :Gimpのを使用して作成

    http://i.stack.imgur.com/XOeMw.jpg

    画像:

    http://i.stack.imgur.com/ZHLZN.jpg

    01:OpenCVのを使用して

    http://i.stack.imgur.com/ox8g9.jpg

    まず結果

    2番目の結果OpenCVの使用:最初のケースで

    http://i.stack.imgur.com/FTlw3.jpg

  • 答えて

    0

    、あなたはカラー画像に閾値処理を行っている(TMP = src.clone()は、カラー画像であるSRCの別のコピーを作成します)。そのような結果が得られ、2番目のケースでは、最初にグレースケールに変換してから、しきい値処理を行い、より良い結果が得られます。グレースケール画像では閾値処理が良好です。

    +0

    ありがとうございます。 私はそれをカラー画像に基づいて作成したいと思います。しかし、私は結果のイメージに色の部分が欲しいのではなく、黒の部分(ほとんどが黒であるように見えるフォントのような)のみを必要とします。私はそれに加えて何をする必要がありますか? – Max

    +0

    画像を繰り返し、3つのチャンネルのピクセル値をチェックし、3つのチャンネルすべてで0または255の場合は同じ値を保持するか、0で置き換えてこれらのカラー値を黒にします。 –

    関連する問題