ichou1のブログ

主に音声認識、時々、データ分析のことを書く

OpenCVメモ(文字の検出と認識その1)

OpenCVを使った文字の検出と認識を試してみる。

使用したOpenCVのバージョンは「4.0.1」
% pkg-config --modversion opencv4
4.0.1

公式サイトを見ると、「text」モジュールに関しては、「Detection」と「Recognition」の2つに分類されている。

まずは「Detection」
デモコードを動かしてみる。

使用した画像(236 x 303)

f:id:ichou1:20190513220738p:plain

画像を各channelごとに分解

f:id:ichou1:20190514105301p:plain

60〜70ピクセル程度のエリアが検出されるよう、minArea / maxAreaを指定。
(赤字で表示された"SOS電話"の"S"を想定)

拡大 + グレースケール変換

f:id:ichou1:20190513222725p:plain

拡大 + 2値化(しきい値120)

f:id:ichou1:20190513222739p:plain

検出を実行。2段階に分けて実施する。

Ptr<ERFilter> er_filter1 = createERFilterNM1(loadClassifierNM1("trained_classifierNM1.xml"),
                                    1,         // thresholdDelta = 1
                                    0.0006f,   // minArea(% of image size) = 0.00025
                                    0.0008f,   // maxArea(% of image size) = 0.13
                                    0.2,       // minProbability = 0.4, 
                                    true,      // nonMaxSuppression = true
                                    0.1);      // minProbabilityDiff = 0.1


Ptr<ERFilter> er_filter2 = createERFilterNM2(loadClassifierNM2("trained_classifierNM2.xml"),
                                    0.3);  // minProbability = 0.3 
各channelごとの抽出されたRegion

f:id:ichou1:20190514105529p:plain

(参考)各channelごとの抽出されたRegion(filterNM1のみ)

f:id:ichou1:20190515225218p:plain